exports property

Map<String, Object?> get exports

Every export, keyed by name.

Functions are WasmFuncs (with a WasmFunc.function adapter), memories are WasmMemorys, and so on - the same shape as instance.exports in JavaScript.

Implementation

Map<String, Object?> get exports => scoped((arena) {
  final result = <String, Object?>{};
  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;
    result[_decode(nameOut.value, lengthOut.value)] = externToDart(
      store,
      item,
    );
  }
  return result;
});