loadPlugin static method

PluginLoadResult loadPlugin(
  1. String path
)

Load a shared library and register its plugin entry-point.

Implementation

static PluginLoadResult loadPlugin(String path) {
  final lib = PlatformLoader.loadCommons();
  final fn = lib.lookupFunction<
      Int32 Function(Pointer<Utf8>, Pointer<Pointer<Utf8>>),
      int Function(Pointer<Utf8>, Pointer<Pointer<Utf8>>)>(
    'rac_registry_load_plugin',
  );
  final pathPtr = path.toNativeUtf8();
  final outNamePtr = calloc<Pointer<Utf8>>();
  try {
    final rc = fn(pathPtr, outNamePtr);
    final namePtr = outNamePtr.value;
    final name = (rc == RAC_SUCCESS && namePtr != nullptr)
        ? namePtr.toDartString()
        : '';
    return PluginLoadResult(name: name, resultCode: rc);
  } finally {
    calloc.free(pathPtr);
    calloc.free(outNamePtr);
  }
}