/*global Module*/
/*global Module*/
/*global _malloc, _free, _memcpy*/
/*global FUNCTION_TABLE, HEAP32*/
/*global Pointer_stringify, writeStringToMemory*/
/*global __emval_register, _emval_handle_array, __emval_decref*/
/*global ___getDynamicPointerType: false*/
/*global ___dynamicPointerCast: false*/
/*global ___typeName:false*/
/*global ___staticPointerCast: false*/
function exposePublicSymbol(name, value) {
if (Module.hasOwnProperty(name)) {
throw new BindingError("Cannot register public name '" + name + "' twice");
}
Module[name] = value;
}
function createNamedFunction(name, body) {
/*jshint evil:true*/
return new Function(
"body",
"return function " + name + "() {\n" +
" return body.apply(this, arguments);\n" +
"};\n"
)(body);
}
function _embind_repr(v) {
var t = typeof v;
if (t === 'object' || t === 'array' || t === 'function') {
return v.toString();
} else {
return '' + v;
}
}
var typeRegistry = {};
var deferredRegistrations = [];
function requestDeferredRegistration(registrationFunction) {
deferredRegistrations.push(registrationFunction);
}
function performDeferredRegistrations(){
while(deferredRegistrations.length > 0) {
var registrationFunction = deferredRegistrations.shift();
registrationFunction();
}
}
function createInheritedFunctionOrProperty(name, type, nameInBaseClass, baseClassType) {
function upcastingWrapper(method) {
return function() {
var baseClassPtr = ___staticPointerCast(this.ptr, type.rawType, baseClassType.rawType);
if (baseClassPtr === this.ptr) {
return method.apply(this, arguments);
} else {
var handle = this.clone();
try {
handle.ptr = baseClassPtr;
return method.apply(handle, arguments);
} finally {
handle.delete();
}
}
};
}
var baseClassPrototype = baseClassType.Handle.prototype;
if (baseClassPrototype.constructor.memberType[nameInBaseClass] === 'field') {
var baseClassDescriptor =