availableProviders method

List<OrtProvider> availableProviders()

Gets all available providers.

Implementation

List<OrtProvider> availableProviders() {
  final providersPtr = calloc<ffi.Pointer<ffi.Pointer<ffi.Char>>>();
  final lengthPtr = calloc<ffi.Int>();
  var statusPtr = ortApiPtr.ref.GetAvailableProviders.asFunction<
      bg.OrtStatusPtr Function(
          ffi.Pointer<ffi.Pointer<ffi.Pointer<ffi.Char>>>,
          ffi.Pointer<ffi.Int>)>()(providersPtr, lengthPtr);
  OrtStatus.checkOrtStatus(statusPtr);
  int length = lengthPtr.value;
  final list = List<OrtProvider>.generate(length, (index) {
    final provider = providersPtr.value[index].cast<Utf8>().toDartString();
    return OrtProvider.valueOf(provider);
  });
  statusPtr = ortApiPtr.ref.ReleaseAvailableProviders.asFunction<
      bg.OrtStatusPtr Function(ffi.Pointer<ffi.Pointer<ffi.Char>>,
          int)>()(providersPtr.value, lengthPtr.value);
  OrtStatus.checkOrtStatus(statusPtr);
  calloc.free(providersPtr);
  calloc.free(lengthPtr);
  return list;
}