trie: clean up iterator constructors

Make it so each iterator has exactly one public constructor:

- NodeIterators can be created through a method.
- Iterators can be created through NewIterator on any NodeIterator.
This commit is contained in:
Felix Lange
2017-04-18 13:37:10 +02:00
parent f958d7d482
commit a13e920af0
9 changed files with 21 additions and 31 deletions

View File

@ -31,15 +31,8 @@ type Iterator struct {
Value []byte // Current data value on which the iterator is positioned on
}
// NewIterator creates a new key-value iterator.
func NewIterator(trie *Trie) *Iterator {
return &Iterator{
nodeIt: NewNodeIterator(trie),
}
}
// FromNodeIterator creates a new key-value iterator from a node iterator
func NewIteratorFromNodeIterator(it NodeIterator) *Iterator {
// NewIterator creates a new key-value iterator from a node iterator
func NewIterator(it NodeIterator) *Iterator {
return &Iterator{
nodeIt: it,
}
@ -99,8 +92,8 @@ type nodeIterator struct {
path []byte // Path to the current node
}
// NewNodeIterator creates an post-order trie iterator.
func NewNodeIterator(trie *Trie) NodeIterator {
// newNodeIterator creates an post-order trie iterator.
func newNodeIterator(trie *Trie) NodeIterator {
if trie.Hash() == emptyState {
return new(nodeIterator)
}