diff options
author | Taylor Gerring <taylor.gerring@gmail.com> | 2015-02-02 21:22:20 +0800 |
---|---|---|
committer | Taylor Gerring <taylor.gerring@gmail.com> | 2015-02-02 21:22:20 +0800 |
commit | 1e60919d47ac2767706c135332a1a4f79bbf3960 (patch) | |
tree | 3db2f5d5446f451d700bf67ef756d85da0fdda25 /trie/node.go | |
parent | 313cfba7d43529db647789ae826bc426d9da7de3 (diff) | |
parent | 0d97c3ce1322083fb9683a5afec004b2626b620a (diff) | |
download | dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar.gz dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar.bz2 dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar.lz dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar.xz dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.tar.zst dexon-1e60919d47ac2767706c135332a1a4f79bbf3960.zip |
Merge pull request #3 from ethereum/develop
Update to develop
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..f28f24771 --- /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+" ")) +} |