forEachEntryPrefix method
Visits entries whose key starts with prefix, in key order.
Implementation
void forEachEntryPrefix(
Uint8List prefix,
void Function(Uint8List key, DocView? document) visit,
) {
if (prefix.isEmpty) {
forEachEntry(visit);
return;
}
// Lower bound: first entry whose key is >= prefix.
var low = 0;
var high = _indexCount - 1;
while (low <= high) {
final middle = (low + high) >> 1;
final comparison = _compareEntry(middle, prefix);
if (comparison < 0) {
low = middle + 1;
} else {
high = middle - 1;
}
}
for (var i = low; i < _indexCount; i++) {
final entryStart = _entryStart(i);
final keyLength = VxsLe.u16(buffer, entryStart);
if (keyLength < prefix.length ||
!_rangeStartsWith(entryStart + 2, keyLength, prefix)) {
break;
}
_visitEntry(i, visit);
}
}