Implementation
@override
List<OrtValue>? get value {
if (_onnxType == ONNXType.map) {
final maps = <OrtValueMap>[];
for (int i = 0; i < _valueCount; ++i) {
final ortValuePtrPtr = calloc<ffi.Pointer<bg.OrtValue>>();
final ortValuePtr = _getOrtValue(_ptr, i, ortValuePtrPtr);
maps.add(OrtValueMap(ortValuePtr));
calloc.free(ortValuePtrPtr);
}
return maps;
} else if (_onnxType == ONNXType.tensor) {
switch (_tensorInfo?._tensorElementType) {
case ONNXTensorElementDataType.string:
case ONNXTensorElementDataType.int64:
case ONNXTensorElementDataType.float:
case ONNXTensorElementDataType.double:
final tensors = <OrtValueTensor>[];
for (int i = 0; i < _valueCount; ++i) {
final ortValuePtrPtr = calloc<ffi.Pointer<bg.OrtValue>>();
final ortValuePtr = _getOrtValue(_ptr, i, ortValuePtrPtr);
tensors.add(OrtValueTensor(ortValuePtr));
calloc.free(ortValuePtrPtr);
}
return tensors;
default:
throw Exception(
'Unsupported type in a sequence, found ${_tensorInfo?._tensorElementType}');
}
} else {
throw Exception("Invalid element type found in sequence");
}
}