add method
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);
}