mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-22 20:56:42 +00:00
refactor: Update node fstring methods to append to a strings.Builder instead of returning a string.
This commit is contained in:
parent
27b3a6087e
commit
efea256506
1 changed files with 37 additions and 16 deletions
53
trie/node.go
53
trie/node.go
|
|
@ -30,7 +30,7 @@ var indices = []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b
|
||||||
type node interface {
|
type node interface {
|
||||||
cache() (hashNode, bool)
|
cache() (hashNode, bool)
|
||||||
encode(w rlp.EncoderBuffer)
|
encode(w rlp.EncoderBuffer)
|
||||||
fstring(string) string
|
fstring(string, *strings.Builder)
|
||||||
}
|
}
|
||||||
|
|
||||||
type (
|
type (
|
||||||
|
|
@ -94,31 +94,52 @@ func (n hashNode) cache() (hashNode, bool) { return nil, true }
|
||||||
func (n valueNode) cache() (hashNode, bool) { return nil, true }
|
func (n valueNode) cache() (hashNode, bool) { return nil, true }
|
||||||
|
|
||||||
// Pretty printing.
|
// Pretty printing.
|
||||||
func (n *fullNode) String() string { return n.fstring("") }
|
func (n *fullNode) String() string {
|
||||||
func (n *shortNode) String() string { return n.fstring("") }
|
var b strings.Builder
|
||||||
func (n hashNode) String() string { return n.fstring("") }
|
n.fstring("", &b)
|
||||||
func (n valueNode) String() string { return n.fstring("") }
|
return b.String()
|
||||||
|
}
|
||||||
|
func (n *shortNode) String() string {
|
||||||
|
var b strings.Builder
|
||||||
|
n.fstring("", &b)
|
||||||
|
return b.String()
|
||||||
|
}
|
||||||
|
func (n hashNode) String() string {
|
||||||
|
var b strings.Builder
|
||||||
|
n.fstring("", &b)
|
||||||
|
return b.String()
|
||||||
|
}
|
||||||
|
func (n valueNode) String() string {
|
||||||
|
var b strings.Builder
|
||||||
|
n.fstring("", &b)
|
||||||
|
return b.String()
|
||||||
|
}
|
||||||
|
|
||||||
func (n *fullNode) fstring(ind string) string {
|
func (n *fullNode) fstring(ind string, b *strings.Builder) {
|
||||||
resp := fmt.Sprintf("[\n%s ", ind)
|
fmt.Fprintf(b, "[\n%s ", ind)
|
||||||
for i, node := range &n.Children {
|
for i, node := range &n.Children {
|
||||||
if node == nil {
|
if node == nil {
|
||||||
resp += fmt.Sprintf("%s: <nil> ", indices[i])
|
fmt.Fprintf(b, "%s: <nil> ", indices[i])
|
||||||
} else {
|
} else {
|
||||||
resp += fmt.Sprintf("%s: %v", indices[i], node.fstring(ind+" "))
|
fmt.Fprintf(b, "%s: ", indices[i])
|
||||||
|
node.fstring(ind+" ", b)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return resp + fmt.Sprintf("\n%s] ", ind)
|
fmt.Fprintf(b, "\n%s] ", ind)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *shortNode) fstring(ind string) string {
|
func (n *shortNode) fstring(ind string, b *strings.Builder) {
|
||||||
return fmt.Sprintf("{%x: %v} ", n.Key, n.Val.fstring(ind+" "))
|
fmt.Fprintf(b, "{%x: ", n.Key)
|
||||||
|
n.Val.fstring(ind+" ", b)
|
||||||
|
b.WriteString("} ")
|
||||||
}
|
}
|
||||||
func (n hashNode) fstring(ind string) string {
|
|
||||||
return fmt.Sprintf("<%x> ", []byte(n))
|
func (n hashNode) fstring(ind string, b *strings.Builder) {
|
||||||
|
fmt.Fprintf(b, "<%x> ", []byte(n))
|
||||||
}
|
}
|
||||||
func (n valueNode) fstring(ind string) string {
|
|
||||||
return fmt.Sprintf("%x ", []byte(n))
|
func (n valueNode) fstring(ind string, b *strings.Builder) {
|
||||||
|
fmt.Fprintf(b, "%x ", []byte(n))
|
||||||
}
|
}
|
||||||
|
|
||||||
// mustDecodeNode is a wrapper of decodeNode and panic if any error is encountered.
|
// mustDecodeNode is a wrapper of decodeNode and panic if any error is encountered.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue