mirror of
https://github.com/tinygo-org/net.git
synced 2026-08-03 03:37:44 +00:00
net/ip, syscall/errno: Reduce code duplication by switching to internal/itoa.
internal/itoa wasn't around back in go 1.12 days when tinygo's syscall/errno.go was written. It was only added as of go 1.17 ( https://github.com/golang/go/commit/061a6903a232cb868780b ) so we have to have an internal copy for now. The internal copy should be deleted when tinygo drops support for go 1.16. FWIW, the new version seems nicer. It uses no allocations when converting 0, and although the optimizer might make this moot, uses a multiplication x 10 instead of a mod operation.
This commit is contained in:
@@ -14,7 +14,10 @@
|
||||
|
||||
package net
|
||||
|
||||
import "internal/bytealg"
|
||||
import (
|
||||
"internal/bytealg"
|
||||
"internal/itoa"
|
||||
)
|
||||
|
||||
// IP address lengths (bytes).
|
||||
const (
|
||||
@@ -533,7 +536,7 @@ func (n *IPNet) String() string {
|
||||
if l == -1 {
|
||||
return nn.String() + "/" + m.String()
|
||||
}
|
||||
return nn.String() + "/" + uitoa(uint(l))
|
||||
return nn.String() + "/" + itoa.Uitoa(uint(l))
|
||||
}
|
||||
|
||||
// Parse IPv4 address (d.d.d.d).
|
||||
|
||||
@@ -64,24 +64,6 @@ func xtoi2(s string, e byte) (byte, bool) {
|
||||
return byte(n), ok && ei == 2
|
||||
}
|
||||
|
||||
// Convert unsigned integer to decimal string.
|
||||
func uitoa(val uint) string {
|
||||
if val == 0 { // avoid string allocation
|
||||
return "0"
|
||||
}
|
||||
var buf [20]byte // big enough for 64bit value base 10
|
||||
i := len(buf) - 1
|
||||
for val >= 10 {
|
||||
q := val / 10
|
||||
buf[i] = byte('0' + val - q*10)
|
||||
i--
|
||||
val = q
|
||||
}
|
||||
// val < 10
|
||||
buf[i] = byte('0' + val)
|
||||
return string(buf[i:])
|
||||
}
|
||||
|
||||
// Convert i to a hexadecimal string. Leading zeros are not printed.
|
||||
func appendHex(dst []byte, i uint32) []byte {
|
||||
if i == 0 {
|
||||
|
||||
Reference in New Issue
Block a user