getAvailableProviders method

List<String> getAvailableProviders()

Implementation

List<String> getAvailableProviders() {
  _runtime.ensureInitialized();
  final api = _runtime.api.ref;

  final outPtr = calloc<Pointer<Pointer<Char>>>();
  final lengthPtr = calloc<Int>();

  try {
    final status =
        api.GetAvailableProviders.asFunction<
          Pointer<OrtStatus> Function(
            Pointer<Pointer<Pointer<Char>>>,
            Pointer<Int>,
          )
        >()(outPtr, lengthPtr);
    _checkStatus(status);

    final length = lengthPtr.value;
    final providers = <String>[];
    final arrayPtr = outPtr.value;

    for (var i = 0; i < length; i++) {
      providers.add(arrayPtr[i].cast<Utf8>().toDartString());
    }

    api.ReleaseAvailableProviders.asFunction<
      Pointer<OrtStatus> Function(Pointer<Pointer<Char>>, int)
    >()(arrayPtr, length);

    return providers;
  } finally {
    calloc.free(outPtr);
    calloc.free(lengthPtr);
  }
}