search method

Iterable<int> search(
  1. BBox query
)

All rowids whose bbox intersects query. Ordering is unspecified.

Implementation

Iterable<int> search(BBox query) sync* {
  assert(query.dims == dims);
  final stack = <_Node>[_root];
  while (stack.isNotEmpty) {
    final n = stack.removeLast();
    for (final e in n.entries) {
      if (!e.bbox.intersects(query)) continue;
      if (n.isLeaf) {
        yield e.rowid;
      } else {
        stack.add(e.child!);
      }
    }
  }
}