add method

void add(
  1. Object? id,
  2. Vector v
)

Add v under key id. Encodes on-the-fly; codes are stored contiguously in _codes.

Implementation

void add(Object? id, Vector v) {
  if (v.dim != dim) {
    throw StateError(
      'LshIndex.add: vector dim ${v.dim} != index dim $dim',
    );
  }
  final n = _ids.length;
  final need = (n + 1) * codeSize;
  if (_codes.length < need) {
    var cap = _codes.isEmpty ? 16 * codeSize : _codes.length;
    while (cap < need) {
      cap *= 2;
    }
    final grown = Uint8List(cap);
    grown.setRange(0, n * codeSize, _codes);
    _codes = grown;
  }
  _encodeOne(v.values, _codes, n * codeSize);
  _ids.add(id);
}