/*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(rawType, name, registeredInstance) {
if (!rawType) {
throw new BindingError('type "' + name + '" must have a positive integer typeid pointer');
}
if (typeRegistry.hasOwnProperty(rawType)) {
throw new BindingError("Cannot register type '" + name + "' twice");
}
registeredInstance.rawType = rawType;
registeredInstance.name = name;
typeRegistry[rawType] = registeredInstance;
return registeredInstance;
}
function requireRegisteredType(rawType, humanName) {
var impl = typeRegistry[rawType];
if (undefined === impl) {
throw new BindingError(humanName + " has unknown type " + typeName(rawType));
}
return impl;
}
function typeName(rawType) {
return Pointer_stringify(___typeName(rawType));
}
function requireArgumentTypes(argCount, rawArgTypes, name) {
var argTypes = new Array(argCount);
for (var i = 0; i < argCount; ++i) {
var rawArgType = HEAP32[(rawArgTypes >> 2) + i];
if (i === 0) {
argTypes[i] = requireRegisteredType(rawArgType, name + " return value");
} else {
argTypes[i] = requireRegisteredType(rawArgType, name + " parameter " + i);
}
}
return argTypes;
}
function RegisteredVoid() {
}
RegisteredVoid.prototype.fromWireType = function() {
return undefined;
};
function __embind_register_void(rawType, name) {
name = Pointer_stringify(name);
registerType(rawType, name, new RegisteredVoid());
}
function RegisteredBool(trueValue, falseValue) {
this.trueValue = trueValue;
this.falseValue = falseValue;
}
RegisteredBool