moveNext method

bool moveNext()

Advances to the next in-range entry.

Implementation

bool moveNext() {
  while (_index < _reader._indexCount) {
    final entryStart = _reader._entryStart(_index);
    final keyLength = VxsLe.u16(_reader.buffer, entryStart);
    final key = Uint8List.sublistView(
      _reader.buffer,
      entryStart + 2,
      entryStart + 2 + keyLength,
    );
    if (_upper != null) {
      final comparison = StringView.compareRanges(
        key,
        0,
        key.length,
        _upper,
        0,
        _upper.length,
      );
      if (comparison > 0 || (comparison == 0 && !_includeUpper)) {
        _index = _reader._indexCount;
        return false;
      }
    }
    final docOffset = VxsLe.u32(_reader.buffer, entryStart + 2 + keyLength);
    _key = key;
    if (docOffset != segmentTombstone) _reader.verifyBlockFor(docOffset);
    _document = docOffset == segmentTombstone
        ? null
        : DocView.parse(_reader.buffer, docOffset, _reader.end - docOffset);
    _index++;
    return true;
  }
  return false;
}