value property

  1. @override
List<OrtValue>? get value
override

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");
  }
}