UNPKG

@thi.ng/wasm-api

Version:

Generic, modular, extensible API bridge and infrastructure for hybrid JS & WebAssembly projects

41 lines (40 loc) 1.05 kB
const __instanceArray = (type, addr, num, size = type.size) => { const items = []; for (; num-- > 0; addr += size) items.push(type.instance(addr)); return items; }; const __array = (mem, ctor, addr, len) => __instanceArray(ctor(mem), addr, len); const __slice32 = (mem, ctor, offset) => { return __array( mem, ctor, mem.u32[offset >>> 2], mem.u32[offset + 4 >>> 2] ); }; const __slice64 = (mem, ctor, offset) => { return __array( mem, ctor, Number(mem.u64[offset >>> 3]), Number(mem.u64[offset + 8 >>> 3]) ); }; const __primslice32 = (mem, view, offset, shift) => { const addr = mem.u32[offset >>> 2] >>> shift; const len = mem.u32[offset + 4 >>> 2]; return view.subarray(addr, addr + len); }; const __primslice64 = (mem, view, offset, shift) => { const addr = Number(mem.u64[offset >>> 3]) >>> shift; const len = Number(mem.u64[offset + 8 >>> 3]); return view.subarray(addr, addr + len); }; export { __array, __instanceArray, __primslice32, __primslice64, __slice32, __slice64 };