diff options
author | obscuren <geffobscura@gmail.com> | 2015-01-08 18:47:04 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-01-08 18:47:04 +0800 |
commit | db4aaedcbdb409e17ea3de161e7b24a80ba0a58c (patch) | |
tree | 98a86ccc265ef05913b8e65a1ce2cae9c13ea788 /trie/node.go | |
parent | 982c812e81304cad835796d4fa3d67c8f08141b6 (diff) | |
download | go-tangerine-db4aaedcbdb409e17ea3de161e7b24a80ba0a58c.tar go-tangerine-db4aaedcbdb409e17ea3de161e7b24a80ba0a58c.tar.gz go-tangerine-db4aaedcbdb409e17ea3de161e7b24a80ba0a58c.tar.bz2 go-tangerine-db4aaedcbdb409e17ea3de161e7b24a80ba0a58c.tar.lz go-tangerine-db4aaedcbdb409e17ea3de161e7b24a80ba0a58c.tar.xz go-tangerine-db4aaedcbdb409e17ea3de161e7b24a80ba0a58c.tar.zst go-tangerine-db4aaedcbdb409e17ea3de161e7b24a80ba0a58c.zip |
Moved ptrie => trie. Removed old trie
Diffstat (limited to 'trie/node.go')
-rw-r--r-- | trie/node.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/trie/node.go b/trie/node.go new file mode 100644 index 000000000..a1f68480f --- /dev/null +++ b/trie/node.go @@ -0,0 +1,40 @@ +package trie + +import "fmt" + +var indices = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "[17]"} + +type Node interface { + Value() Node + Copy() Node // All nodes, for now, return them self + Dirty() bool + fstring(string) string + Hash() interface{} + RlpData() interface{} +} + +// Value node +func (self *ValueNode) String() string { return self.fstring("") } +func (self *FullNode) String() string { return self.fstring("") } +func (self *ShortNode) String() string { return self.fstring("") } +func (self *ValueNode) fstring(ind string) string { return fmt.Sprintf("%x ", self.data) } +func (self *HashNode) fstring(ind string) string { return fmt.Sprintf("%x ", self.key) } + +// Full node +func (self *FullNode) fstring(ind string) string { + resp := fmt.Sprintf("[\n%s ", ind) + for i, node := range self.nodes { + if node == nil { + resp += fmt.Sprintf("%s: <nil> ", indices[i]) + } else { + resp += fmt.Sprintf("%s: %v", indices[i], node.fstring(ind+" ")) + } + } + + return resp + fmt.Sprintf("\n%s] ", ind) +} + +// Short node +func (self *ShortNode) fstring(ind string) string { + return fmt.Sprintf("[ %x: %v ] ", self.key, self.value.fstring(ind+" ")) +} |