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