ffiCreateString function

Pointer<Uint8ListFFI> ffiCreateString(
  1. String? value
)

Implementation

Pointer<Uint8ListFFI> ffiCreateString(String? value) {
  if (value == null) return nullptr;
  final units = utf8.encode(value);
  final Pointer<Uint8> result = malloc<Uint8>(units.length + 1);
  final Uint8List nativeString = result.asTypedList(units.length + 1);
  nativeString.setAll(0, units);
  nativeString[units.length] = 0;

  final Pointer<Uint8ListFFI> pointer = calloc.call(sizeOf<Uint8ListFFI>());
  pointer.ref.str = result.cast();
  pointer.ref.length = units.length;
  return pointer;
}