github.com/jonasnick/go-ethereum@v0.7.12-0.20150216215225-22176f05d387/trie/node.go (about) 1 package trie 2 3 import "fmt" 4 5 var indices = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "[17]"} 6 7 type Node interface { 8 Value() Node 9 Copy(*Trie) Node // All nodes, for now, return them self 10 Dirty() bool 11 fstring(string) string 12 Hash() interface{} 13 RlpData() interface{} 14 } 15 16 // Value node 17 func (self *ValueNode) String() string { return self.fstring("") } 18 func (self *FullNode) String() string { return self.fstring("") } 19 func (self *ShortNode) String() string { return self.fstring("") } 20 func (self *ValueNode) fstring(ind string) string { return fmt.Sprintf("%x ", self.data) } 21 22 //func (self *HashNode) fstring(ind string) string { return fmt.Sprintf("< %x > ", self.key) } 23 func (self *HashNode) fstring(ind string) string { 24 return fmt.Sprintf("%v", self.trie.trans(self)) 25 } 26 27 // Full node 28 func (self *FullNode) fstring(ind string) string { 29 resp := fmt.Sprintf("[\n%s ", ind) 30 for i, node := range self.nodes { 31 if node == nil { 32 resp += fmt.Sprintf("%s: <nil> ", indices[i]) 33 } else { 34 resp += fmt.Sprintf("%s: %v", indices[i], node.fstring(ind+" ")) 35 } 36 } 37 38 return resp + fmt.Sprintf("\n%s] ", ind) 39 } 40 41 // Short node 42 func (self *ShortNode) fstring(ind string) string { 43 return fmt.Sprintf("[ %x: %v ] ", self.key, self.value.fstring(ind+" ")) 44 }