github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/iavl/fast_iterator_okc.go (about) 1 package iavl 2 3 import dbm "github.com/fibonacci-chain/fbc/libs/tm-db" 4 5 type FastIteratorWithCache struct { 6 *UnsavedFastIterator 7 } 8 9 var _ dbm.Iterator = (*FastIteratorWithCache)(nil) 10 11 func NewFastIteratorWithCache(start, end []byte, ascending bool, ndb *nodeDB) *FastIteratorWithCache { 12 iter := &FastIteratorWithCache{ 13 UnsavedFastIterator: &UnsavedFastIterator{}, 14 } 15 16 if ndb == nil { 17 iter.UnsavedFastIterator = newUnsavedFastIterator(start, end, ascending, ndb, nil, nil) 18 return iter 19 } 20 var fnc *fastNodeChanges 21 22 if ndb.tpfv != nil { 23 fnc = ndb.tpfv.expand(ndb.prePersistFastNode) 24 } else { 25 fnc = ndb.prePersistFastNode.clone() 26 } 27 28 iter.UnsavedFastIterator = newUnsavedFastIterator(start, end, ascending, ndb, fnc.additions, fnc.removals) 29 30 return iter 31 }