Copyright 2012 The Go Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
Package atom provides integer codes (also known as atoms) for a fixed set of frequently occurring HTML strings: tag names and attribute keys such as "p" and "id". Sharing an atom's name between all elements with the same tag can result in fewer string allocations when tokenizing and parsing HTML. Integer comparisons are also generally faster than string comparisons. The value of an atom's particular code is not guaranteed to stay the same between versions of this package. Neither is any ordering guaranteed: whether atom.H1 < atom.H2 may also change. The codes are not guaranteed to be dense. The only guarantees are that e.g. looking up "div" will yield atom.Div, calling atom.Div.String will return "div", and atom.Div != 0.
package atom // import "golang.org/x/net/html/atom"
Atom is an integer code for a string. The zero value maps to "".
type Atom uint32
String returns the atom's name.
func ( Atom) () string {
	 := uint32( >> 8)
	 := uint32( & 0xff)
	if + > uint32(len(atomText)) {
		return ""
	}
	return atomText[ : +]
}

func ( Atom) () string {
	return atomText[>>8 : >>8+&0xff]
}
fnv computes the FNV hash with an arbitrary starting value h.
func ( uint32,  []byte) uint32 {
	for  := range  {
		 ^= uint32([])
		 *= 16777619
	}
	return 
}

func ( string,  []byte) bool {
	for ,  := range  {
		if [] !=  {
			return false
		}
	}
	return true
}
Lookup returns the atom whose name is s. It returns zero if there is no such atom. The lookup is case sensitive.
func ( []byte) Atom {
	if len() == 0 || len() > maxAtomLen {
		return 0
	}
	 := fnv(hash0, )
	if  := table[&uint32(len(table)-1)]; int(&0xff) == len() && match(.string(), ) {
		return 
	}
	if  := table[(>>16)&uint32(len(table)-1)]; int(&0xff) == len() && match(.string(), ) {
		return 
	}
	return 0
}
String returns a string whose contents are equal to s. In that sense, it is equivalent to string(s) but may be more efficient.
func ( []byte) string {
	if  := Lookup();  != 0 {
		return .String()
	}
	return string()