OrtValueSequence constructor

OrtValueSequence(
  1. Pointer<OrtValue> ptr
)

Implementation

OrtValueSequence(ffi.Pointer<bg.OrtValue> ptr) {
  _ptr = ptr;
  final valueCountPtr = calloc<ffi.Size>();
  var statusPtr = OrtEnv.instance.ortApiPtr.ref.GetValueCount.asFunction<
      bg.OrtStatusPtr Function(ffi.Pointer<bg.OrtValue>,
          ffi.Pointer<ffi.Size>)>()(_ptr, valueCountPtr);
  OrtStatus.checkOrtStatus(statusPtr);
  _valueCount = valueCountPtr.value;
  calloc.free(valueCountPtr);
  if (_valueCount <= 0) {
    return;
  }
  final firstElementPtrPtr = calloc<ffi.Pointer<bg.OrtValue>>();
  final firstElementPtr = _getOrtValue(_ptr, 0, firstElementPtrPtr);
  final onnxTypePtr = calloc<ffi.Int32>();
  statusPtr = OrtEnv.instance.ortApiPtr.ref.GetValueType.asFunction<
      bg.OrtStatusPtr Function(ffi.Pointer<bg.OrtValue>,
          ffi.Pointer<ffi.Int32>)>()(firstElementPtr, onnxTypePtr);
  OrtStatus.checkOrtStatus(statusPtr);
  _onnxType = ONNXType.valueOf(onnxTypePtr.value);
  if (_onnxType == ONNXType.tensor) {
    _tensorInfo = OrtTensorTypeAndShapeInfo(firstElementPtr);
  } else if (_onnxType == ONNXType.map) {
    // final infoMap = _createMapInfo(firstElementPtr);
    // _firstMapKeyInfo = infoMap.entries.first.key;
    // _firstMapValueInfo = infoMap.entries.first.value;
  }
  _releaseOrtValue(firstElementPtr);
  calloc.free(firstElementPtrPtr);
  calloc.free(onnxTypePtr);
}