exportNames property

List<String> get exportNames

The names of all exports, in the order the module declares them.

Implementation

List<String> get exportNames => scoped((arena) {
  final names = <String>[];
  for (var index = 0; ; index++) {
    final nameOut = arena<ffi.Pointer<ffi.Char>>();
    final lengthOut = arena<ffi.Size>();
    final item = arena<c.wasmtime_extern_t>();
    final found = c.wasmtime_instance_export_nth(
      store.context,
      _native(arena),
      index,
      nameOut,
      lengthOut,
      item,
    );
    if (!found) break;
    names.add(_decode(nameOut.value, lengthOut.value));
    c.wasmtime_extern_delete(item);
  }
  return names;
});