1 21 package com.db4o.inside.btree; 22 23 import com.db4o.foundation.*; 24 25 public abstract class AbstractBTreeRangeIterator implements Iterator4 { 26 27 private final BTreeRangeSingle _range; 28 private BTreePointer _cursor; 29 private BTreePointer _current; 30 31 public AbstractBTreeRangeIterator(BTreeRangeSingle range) { 32 _range = range; 33 _cursor = range.first(); 34 } 35 36 public boolean moveNext() { 37 if (reachedEnd(_cursor)) { 38 _current = null; 39 return false; 40 } 41 _current = _cursor; 42 _cursor = _cursor.next(); 43 return true; 44 } 45 46 public void reset() { 47 _cursor = _range.first(); 48 } 49 50 protected BTreePointer currentPointer() { 51 if (null == _current) { 52 throw new IllegalStateException (); 53 } 54 return _current; 55 } 56 57 private boolean reachedEnd(BTreePointer cursor) { 58 if(cursor == null){ 59 return true; 60 } 61 if(_range.end() == null){ 62 return false; 63 } 64 return _range.end().equals(cursor); 65 } 66 } | Popular Tags |