open source
This commit is contained in:
@@ -0,0 +1,328 @@
|
||||
|
||||
// Bindings utilities
|
||||
|
||||
function WrapperObject() {
|
||||
}
|
||||
WrapperObject.prototype = Object.create(WrapperObject.prototype);
|
||||
WrapperObject.prototype.constructor = WrapperObject;
|
||||
WrapperObject.prototype.__class__ = WrapperObject;
|
||||
WrapperObject.__cache__ = {};
|
||||
Module['WrapperObject'] = WrapperObject;
|
||||
|
||||
function getCache(__class__) {
|
||||
return (__class__ || WrapperObject).__cache__;
|
||||
}
|
||||
Module['getCache'] = getCache;
|
||||
|
||||
function wrapPointer(ptr, __class__) {
|
||||
var cache = getCache(__class__);
|
||||
var ret = cache[ptr];
|
||||
if (ret) return ret;
|
||||
ret = Object.create((__class__ || WrapperObject).prototype);
|
||||
ret.ptr = ptr;
|
||||
return cache[ptr] = ret;
|
||||
}
|
||||
Module['wrapPointer'] = wrapPointer;
|
||||
|
||||
function castObject(obj, __class__) {
|
||||
return wrapPointer(obj.ptr, __class__);
|
||||
}
|
||||
Module['castObject'] = castObject;
|
||||
|
||||
Module['NULL'] = wrapPointer(0);
|
||||
|
||||
function destroy(obj) {
|
||||
if (!obj['__destroy__']) throw 'Error: Cannot destroy object. (Did you create it yourself?)';
|
||||
obj['__destroy__']();
|
||||
// Remove from cache, so the object can be GC'd and refs added onto it released
|
||||
delete getCache(obj.__class__)[obj.ptr];
|
||||
}
|
||||
Module['destroy'] = destroy;
|
||||
|
||||
function compare(obj1, obj2) {
|
||||
return obj1.ptr === obj2.ptr;
|
||||
}
|
||||
Module['compare'] = compare;
|
||||
|
||||
function getPointer(obj) {
|
||||
return obj.ptr;
|
||||
}
|
||||
Module['getPointer'] = getPointer;
|
||||
|
||||
function getClass(obj) {
|
||||
return obj.__class__;
|
||||
}
|
||||
Module['getClass'] = getClass;
|
||||
|
||||
// Converts big (string or array) values into a C-style storage, in temporary space
|
||||
|
||||
var ensureCache = {
|
||||
buffer: 0, // the main buffer of temporary storage
|
||||
size: 0, // the size of buffer
|
||||
pos: 0, // the next free offset in buffer
|
||||
temps: [], // extra allocations
|
||||
needed: 0, // the total size we need next time
|
||||
|
||||
prepare: function() {
|
||||
if (ensureCache.needed) {
|
||||
// clear the temps
|
||||
for (var i = 0; i < ensureCache.temps.length; i++) {
|
||||
Module['_free'](ensureCache.temps[i]);
|
||||
}
|
||||
ensureCache.temps.length = 0;
|
||||
// prepare to allocate a bigger buffer
|
||||
Module['_free'](ensureCache.buffer);
|
||||
ensureCache.buffer = 0;
|
||||
ensureCache.size += ensureCache.needed;
|
||||
// clean up
|
||||
ensureCache.needed = 0;
|
||||
}
|
||||
if (!ensureCache.buffer) { // happens first time, or when we need to grow
|
||||
ensureCache.size += 128; // heuristic, avoid many small grow events
|
||||
ensureCache.buffer = Module['_malloc'](ensureCache.size);
|
||||
assert(ensureCache.buffer);
|
||||
}
|
||||
ensureCache.pos = 0;
|
||||
},
|
||||
alloc: function(array, view) {
|
||||
assert(ensureCache.buffer);
|
||||
var bytes = view.BYTES_PER_ELEMENT;
|
||||
var len = array.length * bytes;
|
||||
len = (len + 7) & -8; // keep things aligned to 8 byte boundaries
|
||||
var ret;
|
||||
if (ensureCache.pos + len >= ensureCache.size) {
|
||||
// we failed to allocate in the buffer, ensureCache time around :(
|
||||
assert(len > 0); // null terminator, at least
|
||||
ensureCache.needed += len;
|
||||
ret = Module['_malloc'](len);
|
||||
ensureCache.temps.push(ret);
|
||||
} else {
|
||||
// we can allocate in the buffer
|
||||
ret = ensureCache.buffer + ensureCache.pos;
|
||||
ensureCache.pos += len;
|
||||
}
|
||||
return ret;
|
||||
},
|
||||
copy: function(array, view, offset) {
|
||||
var offsetShifted = offset;
|
||||
var bytes = view.BYTES_PER_ELEMENT;
|
||||
switch (bytes) {
|
||||
case 2: offsetShifted >>= 1; break;
|
||||
case 4: offsetShifted >>= 2; break;
|
||||
case 8: offsetShifted >>= 3; break;
|
||||
}
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
view[offsetShifted + i] = array[i];
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
function ensureString(value) {
|
||||
if (typeof value === 'string') {
|
||||
var intArray = intArrayFromString(value);
|
||||
var offset = ensureCache.alloc(intArray, HEAP8);
|
||||
ensureCache.copy(intArray, HEAP8, offset);
|
||||
return offset;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
function ensureInt8(value) {
|
||||
if (typeof value === 'object') {
|
||||
var offset = ensureCache.alloc(value, HEAP8);
|
||||
ensureCache.copy(value, HEAP8, offset);
|
||||
return offset;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
function ensureInt16(value) {
|
||||
if (typeof value === 'object') {
|
||||
var offset = ensureCache.alloc(value, HEAP16);
|
||||
ensureCache.copy(value, HEAP16, offset);
|
||||
return offset;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
function ensureInt32(value) {
|
||||
if (typeof value === 'object') {
|
||||
var offset = ensureCache.alloc(value, HEAP32);
|
||||
ensureCache.copy(value, HEAP32, offset);
|
||||
return offset;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
function ensureFloat32(value) {
|
||||
if (typeof value === 'object') {
|
||||
var offset = ensureCache.alloc(value, HEAPF32);
|
||||
ensureCache.copy(value, HEAPF32, offset);
|
||||
return offset;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
function ensureFloat64(value) {
|
||||
if (typeof value === 'object') {
|
||||
var offset = ensureCache.alloc(value, HEAPF64);
|
||||
ensureCache.copy(value, HEAPF64, offset);
|
||||
return offset;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
// _conchParticleTemplate2D
|
||||
function _conchParticleTemplate2D() {
|
||||
this.ptr = _emscripten_bind_conchParticleTemplate2D_conchParticleTemplate2D_0();
|
||||
getCache(_conchParticleTemplate2D)[this.ptr] = this;
|
||||
};;
|
||||
_conchParticleTemplate2D.prototype = Object.create(WrapperObject.prototype);
|
||||
_conchParticleTemplate2D.prototype.constructor = _conchParticleTemplate2D;
|
||||
_conchParticleTemplate2D.prototype.__class__ = _conchParticleTemplate2D;
|
||||
_conchParticleTemplate2D.__cache__ = {};
|
||||
Module['_conchParticleTemplate2D'] = _conchParticleTemplate2D;
|
||||
|
||||
_conchParticleTemplate2D.prototype['setShader'] = _conchParticleTemplate2D.prototype.setShader = function(arg0, arg1, arg2) {
|
||||
var self = this.ptr;
|
||||
ensureCache.prepare();
|
||||
if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr;
|
||||
if (arg1 && typeof arg1 === 'object') arg1 = arg1.ptr;
|
||||
else arg1 = ensureString(arg1);
|
||||
if (arg2 && typeof arg2 === 'object') arg2 = arg2.ptr;
|
||||
else arg2 = ensureString(arg2);
|
||||
_emscripten_bind_conchParticleTemplate2D_setShader_3(self, arg0, arg1, arg2);
|
||||
};;
|
||||
|
||||
_conchParticleTemplate2D.prototype['getID'] = _conchParticleTemplate2D.prototype.getID = function() {
|
||||
var self = this.ptr;
|
||||
return _emscripten_bind_conchParticleTemplate2D_getID_0(self);
|
||||
};;
|
||||
|
||||
_conchParticleTemplate2D.prototype['__destroy__'] = _conchParticleTemplate2D.prototype.__destroy__ = function() {
|
||||
var self = this.ptr;
|
||||
_emscripten_bind_conchParticleTemplate2D___destroy___0(self);
|
||||
};
|
||||
// _conchGraphics
|
||||
function _conchGraphics() {
|
||||
this.ptr = _emscripten_bind_conchGraphics_conchGraphics_0();
|
||||
getCache(_conchGraphics)[this.ptr] = this;
|
||||
};;
|
||||
_conchGraphics.prototype = Object.create(WrapperObject.prototype);
|
||||
_conchGraphics.prototype.constructor = _conchGraphics;
|
||||
_conchGraphics.prototype.__class__ = _conchGraphics;
|
||||
_conchGraphics.__cache__ = {};
|
||||
Module['_conchGraphics'] = _conchGraphics;
|
||||
|
||||
_conchGraphics.prototype['getID'] = _conchGraphics.prototype.getID = function() {
|
||||
var self = this.ptr;
|
||||
return _emscripten_bind_conchGraphics_getID_0(self);
|
||||
};;
|
||||
|
||||
_conchGraphics.prototype['__destroy__'] = _conchGraphics.prototype.__destroy__ = function() {
|
||||
var self = this.ptr;
|
||||
_emscripten_bind_conchGraphics___destroy___0(self);
|
||||
};
|
||||
// conchNode2D
|
||||
function conchNode2D() {
|
||||
this.ptr = _emscripten_bind_conchNode2D_conchNode2D_0();
|
||||
getCache(conchNode2D)[this.ptr] = this;
|
||||
};;
|
||||
conchNode2D.prototype = Object.create(WrapperObject.prototype);
|
||||
conchNode2D.prototype.constructor = conchNode2D;
|
||||
conchNode2D.prototype.__class__ = conchNode2D;
|
||||
conchNode2D.__cache__ = {};
|
||||
Module['conchNode2D'] = conchNode2D;
|
||||
|
||||
conchNode2D.prototype['getID'] = conchNode2D.prototype.getID = function() {
|
||||
var self = this.ptr;
|
||||
return _emscripten_bind_conchNode2D_getID_0(self);
|
||||
};;
|
||||
|
||||
conchNode2D.prototype['setRootNode'] = conchNode2D.prototype.setRootNode = function() {
|
||||
var self = this.ptr;
|
||||
_emscripten_bind_conchNode2D_setRootNode_0(self);
|
||||
};;
|
||||
|
||||
conchNode2D.prototype['__destroy__'] = conchNode2D.prototype.__destroy__ = function() {
|
||||
var self = this.ptr;
|
||||
_emscripten_bind_conchNode2D___destroy___0(self);
|
||||
};
|
||||
// context
|
||||
function context() {
|
||||
this.ptr = _emscripten_bind_context_context_0();
|
||||
getCache(context)[this.ptr] = this;
|
||||
};;
|
||||
context.prototype = Object.create(WrapperObject.prototype);
|
||||
context.prototype.constructor = context;
|
||||
context.prototype.__class__ = context;
|
||||
context.__cache__ = {};
|
||||
Module['context'] = context;
|
||||
|
||||
context.prototype['setSize'] = context.prototype.setSize = function(arg0, arg1) {
|
||||
var self = this.ptr;
|
||||
if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr;
|
||||
if (arg1 && typeof arg1 === 'object') arg1 = arg1.ptr;
|
||||
_emscripten_bind_context_setSize_2(self, arg0, arg1);
|
||||
};;
|
||||
|
||||
context.prototype['setType'] = context.prototype.setType = function(arg0) {
|
||||
var self = this.ptr;
|
||||
if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr;
|
||||
_emscripten_bind_context_setType_1(self, arg0);
|
||||
};;
|
||||
|
||||
context.prototype['getID'] = context.prototype.getID = function() {
|
||||
var self = this.ptr;
|
||||
return _emscripten_bind_context_getID_0(self);
|
||||
};;
|
||||
|
||||
context.prototype['__destroy__'] = context.prototype.__destroy__ = function() {
|
||||
var self = this.ptr;
|
||||
_emscripten_bind_context___destroy___0(self);
|
||||
};
|
||||
// VoidPtr
|
||||
function VoidPtr() { throw "cannot construct a VoidPtr, no constructor in IDL" }
|
||||
VoidPtr.prototype = Object.create(WrapperObject.prototype);
|
||||
VoidPtr.prototype.constructor = VoidPtr;
|
||||
VoidPtr.prototype.__class__ = VoidPtr;
|
||||
VoidPtr.__cache__ = {};
|
||||
Module['VoidPtr'] = VoidPtr;
|
||||
|
||||
VoidPtr.prototype['__destroy__'] = VoidPtr.prototype.__destroy__ = function() {
|
||||
var self = this.ptr;
|
||||
_emscripten_bind_VoidPtr___destroy___0(self);
|
||||
};
|
||||
// conchImage
|
||||
function conchImage() {
|
||||
this.ptr = _emscripten_bind_conchImage_conchImage_0();
|
||||
getCache(conchImage)[this.ptr] = this;
|
||||
};;
|
||||
conchImage.prototype = Object.create(WrapperObject.prototype);
|
||||
conchImage.prototype.constructor = conchImage;
|
||||
conchImage.prototype.__class__ = conchImage;
|
||||
conchImage.__cache__ = {};
|
||||
Module['conchImage'] = conchImage;
|
||||
|
||||
conchImage.prototype['setImageInfo'] = conchImage.prototype.setImageInfo = function(arg0, arg1, arg2) {
|
||||
var self = this.ptr;
|
||||
ensureCache.prepare();
|
||||
if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr;
|
||||
else arg0 = ensureString(arg0);
|
||||
if (arg1 && typeof arg1 === 'object') arg1 = arg1.ptr;
|
||||
if (arg2 && typeof arg2 === 'object') arg2 = arg2.ptr;
|
||||
_emscripten_bind_conchImage_setImageInfo_3(self, arg0, arg1, arg2);
|
||||
};;
|
||||
|
||||
conchImage.prototype['getImageID'] = conchImage.prototype.getImageID = function() {
|
||||
var self = this.ptr;
|
||||
return _emscripten_bind_conchImage_getImageID_0(self);
|
||||
};;
|
||||
|
||||
conchImage.prototype['__destroy__'] = conchImage.prototype.__destroy__ = function() {
|
||||
var self = this.ptr;
|
||||
_emscripten_bind_conchImage___destroy___0(self);
|
||||
};
|
||||
(function() {
|
||||
function setupEnums() {
|
||||
|
||||
}
|
||||
if (Module['calledRun']) setupEnums();
|
||||
else addOnPreMain(setupEnums);
|
||||
})();
|
||||
Reference in New Issue
Block a user