getVector method

Float32List? getVector(
  1. String name
)

Get a FP32 vector field value.

Implementation

Float32List? getVector(String name) {
  if (!hasField(name) || isFieldNull(name)) return null;
  final namePtr = name.toNativeUtf8().cast<Char>();
  final valuePtr = calloc<Pointer<Void>>();
  final sizePtr = calloc<Size>();
  try {
    final rc = _b.zvec_doc_get_field_value_pointer(
      _ptr,
      namePtr,
      DataType.vectorFp32.value,
      valuePtr,
      sizePtr,
    );
    if (rc != zvec_error_code_t.ZVEC_OK) return null;
    if (valuePtr.value == nullptr) return null;
    final length = sizePtr.value ~/ sizeOf<Float>();
    final floatPtr = valuePtr.value.cast<Float>();
    final result = Float32List(length);
    for (var i = 0; i < length; i++) {
      result[i] = floatPtr[i];
    }
    return result;
  } finally {
    calloc.free(namePtr);
    calloc.free(valuePtr);
    calloc.free(sizePtr);
  }
}