ffi_universe 0.0.6 copy "ffi_universe: ^0.0.6" to clipboard
ffi_universe: ^0.0.6 copied to clipboard

discontinued

Standarization FFI will bring support cross platform same style api for boost project

example/ffi_universe_example.dart

import 'dart:convert';
import 'package:ffi_universe/ffi_universe.dart';

typedef MainFunctionNative =
    Int Function(Int argc, Pointer<Pointer<Char>> argv);
typedef MainFunctionDart = int Function(int argc, Pointer<Pointer<Char>> argv);

typedef TestFunctionNative = Void Function(Pointer<Char> text);
typedef TestFunctionDart = void Function(Pointer<Char> text);

typedef InvokeFunctionNative = Pointer<Char> Function(Pointer<Char> parameters);
typedef InvokeFunctionDart = Pointer<Char> Function(Pointer<Char> parameters);

void main() async {
  final DynamicLibrary dynamicLibrary = await FFIUniverse.open(
    path: "libraryname",
  );

  /// main_function
  {
    final List<String> arguments = ["", "--help", "name"];
    final MainFunctionDart mainFunction = dynamicLibrary
        .lookupFunction<MainFunctionNative, MainFunctionDart>("main");
    mainFunction(arguments.length, arguments.toNativeVectorChar());
  }

  /// test_function
  {
    final String text = "Hello";
    final Pointer<Utf8> textNative = text.toNativeUtf8();
    final TestFunctionDart testFunction = dynamicLibrary
        .lookupFunction<TestFunctionNative, TestFunctionDart>("test");
    testFunction(textNative.cast<Char>());
    malloc.free(textNative);
  }

  /// invoke_function
  {
    final Map<String, dynamic> parameters = {"@type": "getVersion"};
    final Pointer<Utf8> parametersNative =
        json.encode(parameters).toNativeUtf8();
    final InvokeFunctionDart invokeFunction = dynamicLibrary
        .lookupFunction<InvokeFunctionNative, InvokeFunctionDart>("invoke");
    final Pointer<Char> resultInvoke = invokeFunction(
      parametersNative.cast<Char>(),
    );
    print(resultInvoke.cast<Utf8>().toDartString());
    malloc.free(parametersNative);
  }

  dynamicLibrary.close();
}
0
likes
0
points
1.67k
downloads

Publisher

unverified uploader

Weekly Downloads

Standarization FFI will bring support cross platform same style api for boost project

Homepage
Repository (GitHub)
View/report issues

Documentation

Documentation

Funding

Consider supporting this project:

github.com
github.com

License

unknown (license)

Dependencies

ffi, http, js, meta, path, web

More

Packages that depend on ffi_universe