2018-01-29 22:36:07 +01:00

104 lines
1.8 KiB
JavaScript

function utils(module) {
var i8,
u8 = new Uint8Array(0),
i16,
u16,
i32,
u32,
f32,
f64;
function maybeUpdate() {
var mem = module.memory.buffer;
if (mem.byteLength === u8.length)
return;
i8 = Int8Array(mem);
u8 = Uint8Array(mem);
i16 = Int16Array(mem);
u16 = Uint16Array(mem);
i32 = Int32Array(mem);
u32 = Uint32Array(mem);
f32 = Float32Array(mem);
f64 = Float64Array(mem);
}
var helpers = {
i8: function(ptr) {
maybeUpdate();
return i8[ptr];
},
u8: function(ptr) {
maybeUpdate();
return u8[ptr];
},
i16: function(ptr) {
maybeUpdate();
return i16[ptr >>> 1];
},
u16: function(ptr) {
maybeUpdate();
return u16[ptr >>> 1];
},
i32: function(ptr) {
maybeUpdate();
return i32[ptr >>> 2];
},
u32: function(ptr) {
maybeUpdate();
return u32[ptr >>> 2];
},
i64: function(ptr) {
maybeUpdate();
return {
low: i32[ptr >>> 2],
high: i32[(ptr >>> 2) + 1]
};
},
u64: function(ptr) {
maybeUpdate();
return {
low: u32[ptr >>> 2],
high: u32[(ptr >>> 2) + 1]
};
},
bool: function(ptr) {
maybeUpdate();
return u8[ptr] === 1;
},
f32: function(ptr) {
maybeUpdate();
return f32[ptr >>> 2];
},
f64: function(ptr) {
maybeUpdate();
return f64[ptr >>> 3];
},
string: function(ptr) {
maybeUpdate();
var len = u32[ptr >>> 2];
var off = (ptr >>> 1) + 2;
return String.fromCharCode.apply(String, u16.subarray(off, off + len));
}
};
return helpers;
};
Object.defineProperties(module.exports = utils, {
__esModule: { value: true },
default: { value: utils }
});