diff options
Diffstat (limited to 'vendor/golang.org/x/net/publicsuffix/list.go')
-rw-r--r-- | vendor/golang.org/x/net/publicsuffix/list.go | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/vendor/golang.org/x/net/publicsuffix/list.go b/vendor/golang.org/x/net/publicsuffix/list.go index e2fddd6..d56e9e7 100644 --- a/vendor/golang.org/x/net/publicsuffix/list.go +++ b/vendor/golang.org/x/net/publicsuffix/list.go @@ -101,10 +101,10 @@ loop: break } - u := nodes[f] >> (nodesBitsTextOffset + nodesBitsTextLength) + u := uint32(nodes.get(f) >> (nodesBitsTextOffset + nodesBitsTextLength)) icannNode = u&(1<<nodesBitsICANN-1) != 0 u >>= nodesBitsICANN - u = children[u&(1<<nodesBitsChildren-1)] + u = children.get(u & (1<<nodesBitsChildren - 1)) lo = u & (1<<childrenBitsLo - 1) u >>= childrenBitsLo hi = u & (1<<childrenBitsHi - 1) @@ -156,7 +156,7 @@ func find(label string, lo, hi uint32) uint32 { // nodeLabel returns the label for the i'th node. func nodeLabel(i uint32) string { - x := nodes[i] + x := nodes.get(i) length := x & (1<<nodesBitsTextLength - 1) x >>= nodesBitsTextLength offset := x & (1<<nodesBitsTextOffset - 1) @@ -180,3 +180,24 @@ func EffectiveTLDPlusOne(domain string) (string, error) { } return domain[1+strings.LastIndex(domain[:i], "."):], nil } + +type uint32String string + +func (u uint32String) get(i uint32) uint32 { + off := i * 4 + return (uint32(u[off])<<24 | + uint32(u[off+1])<<16 | + uint32(u[off+2])<<8 | + uint32(u[off+3])) +} + +type uint40String string + +func (u uint40String) get(i uint32) uint64 { + off := uint64(i * (nodesBits / 8)) + return uint64(u[off])<<32 | + uint64(u[off+1])<<24 | + uint64(u[off+2])<<16 | + uint64(u[off+3])<<8 | + uint64(u[off+4]) +} |