/*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 = {};
function registerType(type, name, registeredInstance) {
if (!type) {
throw new BindingError('type "' + name + '" must have a positive integer typeid pointer');
}
if (typeRegistry.hasOwnProperty(type)) {
throw new BindingError("Cannot register type '" + name + "' twice");
}
registeredInstance.type = type;
registeredInstance.name = name;
typeRegistry[type] = registeredInstance;
}
function RegisteredVoid() {
}
RegisteredVoid.prototype.fromWireType = function() {
return undefined;
};
function __embind_register_void(voidType, name) {
name = Pointer_stringify(name);
registerType(voidType, name, new RegisteredVoid());
}
function RegisteredBool(trueValue, falseValue) {
this.trueValue = trueValue;
this.falseValue = falseValue;
}
RegisteredBool.prototype.toWireType = function(destructors, o) {
return o ? this.trueValue : this.falseValue;
};
RegisteredBool.prototype.fromWireType = function(wt) {
// ambiguous emscripten ABI: sometimes return values are
// true or false, and sometimes integers (0 or 1)
return !!wt;
};
function __embind_register_bool(boolType, name, trueValue, falseValue) {
name = Pointer_stringify(name);
registerType(boolType, name, new RegisteredBool(trueValue, falseValue));
}
function RegisteredInteger() {
}
RegisteredInteger.prototype.toWireType = function(destructors, value) {
if (typeof value !== "number") {
throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name);
}
return value | 0;
};
RegisteredInteger.prototype.fromWireType = function(value) {
return value;
};
function __embind_register_integer(primitiveType, name) {
name = Pointer_stringify(name);
registerType(primitiveType, name, new RegisteredInteger());
}
function RegisteredFloat() {
}
RegisteredFloat.prototype.toWireType = function(destructors, value) {
if (typeof value !== "number") {
throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' +this.