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  }