You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2533 lines
114 KiB
JavaScript

var BASIS = ( function () {
var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
if ( typeof __filename !== 'undefined' ) _scriptDir = _scriptDir || __filename;
return (
function ( BASIS ) {
BASIS = BASIS || {};
var Module = typeof BASIS !== "undefined" ? BASIS : {};
var readyPromiseResolve, readyPromiseReject;
Module[ "ready" ] = new Promise( function ( resolve, reject ) {
readyPromiseResolve = resolve;
readyPromiseReject = reject
} );
var moduleOverrides = {};
var key;
for ( key in Module ) {
if ( Module.hasOwnProperty( key ) ) {
moduleOverrides[ key ] = Module[ key ]
}
}
var arguments_ = [];
var thisProgram = "./this.program";
var quit_ = function ( status, toThrow ) {
throw toThrow
};
var ENVIRONMENT_IS_WEB = false;
var ENVIRONMENT_IS_WORKER = false;
var ENVIRONMENT_IS_NODE = false;
var ENVIRONMENT_IS_SHELL = false;
ENVIRONMENT_IS_WEB = typeof window === "object";
ENVIRONMENT_IS_WORKER = typeof importScripts === "function";
ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string";
ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
var scriptDirectory = "";
function locateFile( path ) {
if ( Module[ "locateFile" ] ) {
return Module[ "locateFile" ]( path, scriptDirectory )
}
return scriptDirectory + path
}
var read_, readAsync, readBinary, setWindowTitle;
var nodeFS;
var nodePath;
if ( ENVIRONMENT_IS_NODE ) {
if ( ENVIRONMENT_IS_WORKER ) {
scriptDirectory = require( "path" ).dirname( scriptDirectory ) + "/"
} else {
scriptDirectory = __dirname + "/"
}
read_ = function shell_read( filename, binary ) {
if ( !nodeFS ) nodeFS = require( "fs" );
if ( !nodePath ) nodePath = require( "path" );
filename = nodePath[ "normalize" ]( filename );
return nodeFS[ "readFileSync" ]( filename, binary ? null : "utf8" )
};
readBinary = function readBinary( filename ) {
var ret = read_( filename, true );
if ( !ret.buffer ) {
ret = new Uint8Array( ret )
}
assert( ret.buffer );
return ret
};
if ( process[ "argv" ].length > 1 ) {
thisProgram = process[ "argv" ][ 1 ].replace( /\\/g, "/" )
}
arguments_ = process[ "argv" ].slice( 2 );
process[ "on" ]( "uncaughtException", function ( ex ) {
if ( !( ex instanceof ExitStatus ) ) {
throw ex
}
} );
process[ "on" ]( "unhandledRejection", abort );
quit_ = function ( status ) {
process[ "exit" ]( status )
};
Module[ "inspect" ] = function () {
return "[Emscripten Module object]"
}
} else if ( ENVIRONMENT_IS_SHELL ) {
if ( typeof read != "undefined" ) {
read_ = function shell_read( f ) {
return read( f )
}
}
readBinary = function readBinary( f ) {
var data;
if ( typeof readbuffer === "function" ) {
return new Uint8Array( readbuffer( f ) )
}
data = read( f, "binary" );
assert( typeof data === "object" );
return data
};
if ( typeof scriptArgs != "undefined" ) {
arguments_ = scriptArgs
} else if ( typeof arguments != "undefined" ) {
arguments_ = arguments
}
if ( typeof quit === "function" ) {
quit_ = function ( status ) {
quit( status )
}
}
if ( typeof print !== "undefined" ) {
if ( typeof console === "undefined" ) console = {};
console.log = print;
console.warn = console.error = typeof printErr !== "undefined" ? printErr : print
}
} else if ( ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER ) {
if ( ENVIRONMENT_IS_WORKER ) {
scriptDirectory = self.location.href
} else if ( typeof document !== "undefined" && document.currentScript ) {
scriptDirectory = document.currentScript.src
}
if ( _scriptDir ) {
scriptDirectory = _scriptDir
}
if ( scriptDirectory.indexOf( "blob:" ) !== 0 ) {
scriptDirectory = scriptDirectory.substr( 0, scriptDirectory.lastIndexOf( "/" ) + 1 )
} else {
scriptDirectory = ""
}
{
read_ = function shell_read( url ) {
var xhr = new XMLHttpRequest;
xhr.open( "GET", url, false );
xhr.send( null );
return xhr.responseText
};
if ( ENVIRONMENT_IS_WORKER ) {
readBinary = function readBinary( url ) {
var xhr = new XMLHttpRequest;
xhr.open( "GET", url, false );
xhr.responseType = "arraybuffer";
xhr.send( null );
return new Uint8Array( xhr.response )
}
}
readAsync = function readAsync( url, onload, onerror ) {
var xhr = new XMLHttpRequest;
xhr.open( "GET", url, true );
xhr.responseType = "arraybuffer";
xhr.onload = function xhr_onload() {
if ( xhr.status == 200 || xhr.status == 0 && xhr.response ) {
onload( xhr.response );
return
}
onerror()
};
xhr.onerror = onerror;
xhr.send( null )
}
}
setWindowTitle = function ( title ) {
document.title = title
}
} else {
}
var out = Module[ "print" ] || console.log.bind( console );
var err = Module[ "printErr" ] || console.warn.bind( console );
for ( key in moduleOverrides ) {
if ( moduleOverrides.hasOwnProperty( key ) ) {
Module[ key ] = moduleOverrides[ key ]
}
}
moduleOverrides = null;
if ( Module[ "arguments" ] ) arguments_ = Module[ "arguments" ];
if ( Module[ "thisProgram" ] ) thisProgram = Module[ "thisProgram" ];
if ( Module[ "quit" ] ) quit_ = Module[ "quit" ];
var wasmBinary;
if ( Module[ "wasmBinary" ] ) wasmBinary = Module[ "wasmBinary" ];
var noExitRuntime;
if ( Module[ "noExitRuntime" ] ) noExitRuntime = Module[ "noExitRuntime" ];
if ( typeof WebAssembly !== "object" ) {
abort( "no native wasm support detected" )
}
var wasmMemory;
var ABORT = false;
var EXITSTATUS;
function assert( condition, text ) {
if ( !condition ) {
abort( "Assertion failed: " + text )
}
}
var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder( "utf8" ) : undefined;
function UTF8ArrayToString( heap, idx, maxBytesToRead ) {
var endIdx = idx + maxBytesToRead;
var endPtr = idx;
while ( heap[ endPtr ] && !( endPtr >= endIdx ) ) ++endPtr;
if ( endPtr - idx > 16 && heap.subarray && UTF8Decoder ) {
return UTF8Decoder.decode( heap.subarray( idx, endPtr ) )
} else {
var str = "";
while ( idx < endPtr ) {
var u0 = heap[ idx++ ];
if ( !( u0 & 128 ) ) {
str += String.fromCharCode( u0 );
continue
}
var u1 = heap[ idx++ ] & 63;
if ( ( u0 & 224 ) == 192 ) {
str += String.fromCharCode( ( u0 & 31 ) << 6 | u1 );
continue
}
var u2 = heap[ idx++ ] & 63;
if ( ( u0 & 240 ) == 224 ) {
u0 = ( u0 & 15 ) << 12 | u1 << 6 | u2
} else {
u0 = ( u0 & 7 ) << 18 | u1 << 12 | u2 << 6 | heap[ idx++ ] & 63
}
if ( u0 < 65536 ) {
str += String.fromCharCode( u0 )
} else {
var ch = u0 - 65536;
str += String.fromCharCode( 55296 | ch >> 10, 56320 | ch & 1023 )
}
}
}
return str
}
function UTF8ToString( ptr, maxBytesToRead ) {
return ptr ? UTF8ArrayToString( HEAPU8, ptr, maxBytesToRead ) : ""
}
function stringToUTF8Array( str, heap, outIdx, maxBytesToWrite ) {
if ( !( maxBytesToWrite > 0 ) ) return 0;
var startIdx = outIdx;
var endIdx = outIdx + maxBytesToWrite - 1;
for ( var i = 0; i < str.length; ++i ) {
var u = str.charCodeAt( i );
if ( u >= 55296 && u <= 57343 ) {
var u1 = str.charCodeAt( ++i );
u = 65536 + ( ( u & 1023 ) << 10 ) | u1 & 1023
}
if ( u <= 127 ) {
if ( outIdx >= endIdx ) break;
heap[ outIdx++ ] = u
} else if ( u <= 2047 ) {
if ( outIdx + 1 >= endIdx ) break;
heap[ outIdx++ ] = 192 | u >> 6;
heap[ outIdx++ ] = 128 | u & 63
} else if ( u <= 65535 ) {
if ( outIdx + 2 >= endIdx ) break;
heap[ outIdx++ ] = 224 | u >> 12;
heap[ outIdx++ ] = 128 | u >> 6 & 63;
heap[ outIdx++ ] = 128 | u & 63
} else {
if ( outIdx + 3 >= endIdx ) break;
heap[ outIdx++ ] = 240 | u >> 18;
heap[ outIdx++ ] = 128 | u >> 12 & 63;
heap[ outIdx++ ] = 128 | u >> 6 & 63;
heap[ outIdx++ ] = 128 | u & 63
}
}
heap[ outIdx ] = 0;
return outIdx - startIdx
}
function stringToUTF8( str, outPtr, maxBytesToWrite ) {
return stringToUTF8Array( str, HEAPU8, outPtr, maxBytesToWrite )
}
function lengthBytesUTF8( str ) {
var len = 0;
for ( var i = 0; i < str.length; ++i ) {
var u = str.charCodeAt( i );
if ( u >= 55296 && u <= 57343 ) u = 65536 + ( ( u & 1023 ) << 10 ) | str.charCodeAt( ++i ) & 1023;
if ( u <= 127 ) ++len; else if ( u <= 2047 ) len += 2; else if ( u <= 65535 ) len += 3; else len += 4
}
return len
}
var UTF16Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder( "utf-16le" ) : undefined;
function UTF16ToString( ptr, maxBytesToRead ) {
var endPtr = ptr;
var idx = endPtr >> 1;
var maxIdx = idx + maxBytesToRead / 2;
while ( !( idx >= maxIdx ) && HEAPU16[ idx ] ) ++idx;
endPtr = idx << 1;
if ( endPtr - ptr > 32 && UTF16Decoder ) {
return UTF16Decoder.decode( HEAPU8.subarray( ptr, endPtr ) )
} else {
var str = "";
for ( var i = 0; !( i >= maxBytesToRead / 2 ); ++i ) {
var codeUnit = HEAP16[ ptr + i * 2 >> 1 ];
if ( codeUnit == 0 ) break;
str += String.fromCharCode( codeUnit )
}
return str
}
}
function stringToUTF16( str, outPtr, maxBytesToWrite ) {
if ( maxBytesToWrite === undefined ) {
maxBytesToWrite = 2147483647
}
if ( maxBytesToWrite < 2 ) return 0;
maxBytesToWrite -= 2;
var startPtr = outPtr;
var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;
for ( var i = 0; i < numCharsToWrite; ++i ) {
var codeUnit = str.charCodeAt( i );
HEAP16[ outPtr >> 1 ] = codeUnit;
outPtr += 2
}
HEAP16[ outPtr >> 1 ] = 0;
return outPtr - startPtr
}
function lengthBytesUTF16( str ) {
return str.length * 2
}
function UTF32ToString( ptr, maxBytesToRead ) {
var i = 0;
var str = "";
while ( !( i >= maxBytesToRead / 4 ) ) {
var utf32 = HEAP32[ ptr + i * 4 >> 2 ];
if ( utf32 == 0 ) break;
++i;
if ( utf32 >= 65536 ) {
var ch = utf32 - 65536;
str += String.fromCharCode( 55296 | ch >> 10, 56320 | ch & 1023 )
} else {
str += String.fromCharCode( utf32 )
}
}
return str
}
function stringToUTF32( str, outPtr, maxBytesToWrite ) {
if ( maxBytesToWrite === undefined ) {
maxBytesToWrite = 2147483647
}
if ( maxBytesToWrite < 4 ) return 0;
var startPtr = outPtr;
var endPtr = startPtr + maxBytesToWrite - 4;
for ( var i = 0; i < str.length; ++i ) {
var codeUnit = str.charCodeAt( i );
if ( codeUnit >= 55296 && codeUnit <= 57343 ) {
var trailSurrogate = str.charCodeAt( ++i );
codeUnit = 65536 + ( ( codeUnit & 1023 ) << 10 ) | trailSurrogate & 1023
}
HEAP32[ outPtr >> 2 ] = codeUnit;
outPtr += 4;
if ( outPtr + 4 > endPtr ) break
}
HEAP32[ outPtr >> 2 ] = 0;
return outPtr - startPtr
}
function lengthBytesUTF32( str ) {
var len = 0;
for ( var i = 0; i < str.length; ++i ) {
var codeUnit = str.charCodeAt( i );
if ( codeUnit >= 55296 && codeUnit <= 57343 ) ++i;
len += 4
}
return len
}
function alignUp( x, multiple ) {
if ( x % multiple > 0 ) {
x += multiple - x % multiple
}
return x
}
var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
function updateGlobalBufferAndViews( buf ) {
buffer = buf;
Module[ "HEAP8" ] = HEAP8 = new Int8Array( buf );
Module[ "HEAP16" ] = HEAP16 = new Int16Array( buf );
Module[ "HEAP32" ] = HEAP32 = new Int32Array( buf );
Module[ "HEAPU8" ] = HEAPU8 = new Uint8Array( buf );
Module[ "HEAPU16" ] = HEAPU16 = new Uint16Array( buf );
Module[ "HEAPU32" ] = HEAPU32 = new Uint32Array( buf );
Module[ "HEAPF32" ] = HEAPF32 = new Float32Array( buf );
Module[ "HEAPF64" ] = HEAPF64 = new Float64Array( buf )
}
var INITIAL_MEMORY = Module[ "INITIAL_MEMORY" ] || 16777216;
var wasmTable;
var __ATPRERUN__ = [];
var __ATINIT__ = [];
var __ATMAIN__ = [];
var __ATPOSTRUN__ = [];
var runtimeInitialized = false;
function preRun() {
if ( Module[ "preRun" ] ) {
if ( typeof Module[ "preRun" ] == "function" ) Module[ "preRun" ] = [ Module[ "preRun" ] ];
while ( Module[ "preRun" ].length ) {
addOnPreRun( Module[ "preRun" ].shift() )
}
}
callRuntimeCallbacks( __ATPRERUN__ )
}
function initRuntime() {
runtimeInitialized = true;
callRuntimeCallbacks( __ATINIT__ )
}
function preMain() {
callRuntimeCallbacks( __ATMAIN__ )
}
function postRun() {
if ( Module[ "postRun" ] ) {
if ( typeof Module[ "postRun" ] == "function" ) Module[ "postRun" ] = [ Module[ "postRun" ] ];
while ( Module[ "postRun" ].length ) {
addOnPostRun( Module[ "postRun" ].shift() )
}
}
callRuntimeCallbacks( __ATPOSTRUN__ )
}
function addOnPreRun( cb ) {
__ATPRERUN__.unshift( cb )
}
function addOnPostRun( cb ) {
__ATPOSTRUN__.unshift( cb )
}
var runDependencies = 0;
var runDependencyWatcher = null;
var dependenciesFulfilled = null;
function addRunDependency( id ) {
runDependencies++;
if ( Module[ "monitorRunDependencies" ] ) {
Module[ "monitorRunDependencies" ]( runDependencies )
}
}
function removeRunDependency( id ) {
runDependencies--;
if ( Module[ "monitorRunDependencies" ] ) {
Module[ "monitorRunDependencies" ]( runDependencies )
}
if ( runDependencies == 0 ) {
if ( runDependencyWatcher !== null ) {
clearInterval( runDependencyWatcher );
runDependencyWatcher = null
}
if ( dependenciesFulfilled ) {
var callback = dependenciesFulfilled;
dependenciesFulfilled = null;
callback()
}
}
}
Module[ "preloadedImages" ] = {};
Module[ "preloadedAudios" ] = {};
function abort( what ) {
if ( Module[ "onAbort" ] ) {
Module[ "onAbort" ]( what )
}
what += "";
err( what );
ABORT = true;
EXITSTATUS = 1;
what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";
var e = new WebAssembly.RuntimeError( what );
readyPromiseReject( e );
throw e
}
function hasPrefix( str, prefix ) {
return String.prototype.startsWith ? str.startsWith( prefix ) : str.indexOf( prefix ) === 0
}
var dataURIPrefix = "data:application/octet-stream;base64,";
function isDataURI( filename ) {
return hasPrefix( filename, dataURIPrefix )
}
var fileURIPrefix = "file://";
function isFileURI( filename ) {
return hasPrefix( filename, fileURIPrefix )
}
var wasmBinaryFile = "basis_transcoder.wasm";
if ( !isDataURI( wasmBinaryFile ) ) {
wasmBinaryFile = locateFile( wasmBinaryFile )
}
function getBinary() {
try {
if ( wasmBinary ) {
return new Uint8Array( wasmBinary )
}
if ( readBinary ) {
return readBinary( wasmBinaryFile )
} else {
throw"both async and sync fetching of the wasm failed"
}
} catch ( err ) {
abort( err )
}
}
function getBinaryPromise() {
if ( !wasmBinary && ( ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER ) && typeof fetch === "function" && !isFileURI( wasmBinaryFile ) ) {
return fetch( wasmBinaryFile, { credentials: "same-origin" } ).then( function ( response ) {
if ( !response[ "ok" ] ) {
throw"failed to load wasm binary file at '" + wasmBinaryFile + "'"
}
return response[ "arrayBuffer" ]()
} ).catch( function () {
return getBinary()
} )
}
return Promise.resolve().then( getBinary )
}
function createWasm() {
var info = { "a": asmLibraryArg };
function receiveInstance( instance, module ) {
var exports = instance.exports;
Module[ "asm" ] = exports;
wasmMemory = Module[ "asm" ][ "H" ];
updateGlobalBufferAndViews( wasmMemory.buffer );
wasmTable = Module[ "asm" ][ "I" ];
removeRunDependency( "wasm-instantiate" )
}
addRunDependency( "wasm-instantiate" );
function receiveInstantiatedSource( output ) {
receiveInstance( output[ "instance" ] )
}
function instantiateArrayBuffer( receiver ) {
return getBinaryPromise().then( function ( binary ) {
return WebAssembly.instantiate( binary, info )
} ).then( receiver, function ( reason ) {
err( "failed to asynchronously prepare wasm: " + reason );
abort( reason )
} )
}
function instantiateAsync() {
if ( !wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI( wasmBinaryFile ) && !isFileURI( wasmBinaryFile ) && typeof fetch === "function" ) {
return fetch( wasmBinaryFile, { credentials: "same-origin" } ).then( function ( response ) {
var result = WebAssembly.instantiateStreaming( response, info );
return result.then( receiveInstantiatedSource, function ( reason ) {
err( "wasm streaming compile failed: " + reason );
err( "falling back to ArrayBuffer instantiation" );
return instantiateArrayBuffer( receiveInstantiatedSource )
} )
} )
} else {
return instantiateArrayBuffer( receiveInstantiatedSource )
}
}
if ( Module[ "instantiateWasm" ] ) {
try {
var exports = Module[ "instantiateWasm" ]( info, receiveInstance );
return exports
} catch ( e ) {
err( "Module.instantiateWasm callback failed with error: " + e );
return false
}
}
instantiateAsync().catch( readyPromiseReject );
return {}
}
function callRuntimeCallbacks( callbacks ) {
while ( callbacks.length > 0 ) {
var callback = callbacks.shift();
if ( typeof callback == "function" ) {
callback( Module );
continue
}
var func = callback.func;
if ( typeof func === "number" ) {
if ( callback.arg === undefined ) {
wasmTable.get( func )()
} else {
wasmTable.get( func )( callback.arg )
}
} else {
func( callback.arg === undefined ? null : callback.arg )
}
}
}
var ExceptionInfoAttrs = {
DESTRUCTOR_OFFSET: 0,
REFCOUNT_OFFSET: 4,
TYPE_OFFSET: 8,
CAUGHT_OFFSET: 12,
RETHROWN_OFFSET: 13,
SIZE: 16
};
function ___cxa_allocate_exception( size ) {
return _malloc( size + ExceptionInfoAttrs.SIZE ) + ExceptionInfoAttrs.SIZE
}
function ExceptionInfo( excPtr ) {
this.excPtr = excPtr;
this.ptr = excPtr - ExceptionInfoAttrs.SIZE;
this.set_type = function ( type ) {
HEAP32[ this.ptr + ExceptionInfoAttrs.TYPE_OFFSET >> 2 ] = type
};
this.get_type = function () {
return HEAP32[ this.ptr + ExceptionInfoAttrs.TYPE_OFFSET >> 2 ]
};
this.set_destructor = function ( destructor ) {
HEAP32[ this.ptr + ExceptionInfoAttrs.DESTRUCTOR_OFFSET >> 2 ] = destructor
};
this.get_destructor = function () {
return HEAP32[ this.ptr + ExceptionInfoAttrs.DESTRUCTOR_OFFSET >> 2 ]
};
this.set_refcount = function ( refcount ) {
HEAP32[ this.ptr + ExceptionInfoAttrs.REFCOUNT_OFFSET >> 2 ] = refcount
};
this.set_caught = function ( caught ) {
caught = caught ? 1 : 0;
HEAP8[ this.ptr + ExceptionInfoAttrs.CAUGHT_OFFSET >> 0 ] = caught
};
this.get_caught = function () {
return HEAP8[ this.ptr + ExceptionInfoAttrs.CAUGHT_OFFSET >> 0 ] != 0
};
this.set_rethrown = function ( rethrown ) {
rethrown = rethrown ? 1 : 0;
HEAP8[ this.ptr + ExceptionInfoAttrs.RETHROWN_OFFSET >> 0 ] = rethrown
};
this.get_rethrown = function () {
return HEAP8[ this.ptr + ExceptionInfoAttrs.RETHROWN_OFFSET >> 0 ] != 0
};
this.init = function ( type, destructor ) {
this.set_type( type );
this.set_destructor( destructor );
this.set_refcount( 0 );
this.set_caught( false );
this.set_rethrown( false )
};
this.add_ref = function () {
var value = HEAP32[ this.ptr + ExceptionInfoAttrs.REFCOUNT_OFFSET >> 2 ];
HEAP32[ this.ptr + ExceptionInfoAttrs.REFCOUNT_OFFSET >> 2 ] = value + 1
};
this.release_ref = function () {
var prev = HEAP32[ this.ptr + ExceptionInfoAttrs.REFCOUNT_OFFSET >> 2 ];
HEAP32[ this.ptr + ExceptionInfoAttrs.REFCOUNT_OFFSET >> 2 ] = prev - 1;
return prev === 1
}
}
var exceptionLast = 0;
var uncaughtExceptionCount = 0;
function ___cxa_throw( ptr, type, destructor ) {
var info = new ExceptionInfo( ptr );
info.init( type, destructor );
exceptionLast = ptr;
uncaughtExceptionCount++;
throw ptr
}
var structRegistrations = {};
function runDestructors( destructors ) {
while ( destructors.length ) {
var ptr = destructors.pop();
var del = destructors.pop();
del( ptr )
}
}
function simpleReadValueFromPointer( pointer ) {
return this[ "fromWireType" ]( HEAPU32[ pointer >> 2 ] )
}
var awaitingDependencies = {};
var registeredTypes = {};
var typeDependencies = {};
var char_0 = 48;
var char_9 = 57;
function makeLegalFunctionName( name ) {
if ( undefined === name ) {
return "_unknown"
}
name = name.replace( /[^a-zA-Z0-9_]/g, "$" );
var f = name.charCodeAt( 0 );
if ( f >= char_0 && f <= char_9 ) {
return "_" + name
} else {
return name
}
}
function createNamedFunction( name, body ) {
name = makeLegalFunctionName( name );
return new Function( "body", "return function " + name + "() {\n" + ' "use strict";' + " return body.apply(this, arguments);\n" + "};\n" )( body )
}
function extendError( baseErrorType, errorName ) {
var errorClass = createNamedFunction( errorName, function ( message ) {
this.name = errorName;
this.message = message;
var stack = new Error( message ).stack;
if ( stack !== undefined ) {
this.stack = this.toString() + "\n" + stack.replace( /^Error(:[^\n]*)?\n/, "" )
}
} );
errorClass.prototype = Object.create( baseErrorType.prototype );
errorClass.prototype.constructor = errorClass;
errorClass.prototype.toString = function () {
if ( this.message === undefined ) {
return this.name
} else {
return this.name + ": " + this.message
}
};
return errorClass
}
var InternalError = undefined;
function throwInternalError( message ) {
throw new InternalError( message )
}
function whenDependentTypesAreResolved( myTypes, dependentTypes, getTypeConverters ) {
myTypes.forEach( function ( type ) {
typeDependencies[ type ] = dependentTypes
} );
function onComplete( typeConverters ) {
var myTypeConverters = getTypeConverters( typeConverters );
if ( myTypeConverters.length !== myTypes.length ) {
throwInternalError( "Mismatched type converter count" )
}
for ( var i = 0; i < myTypes.length; ++i ) {
registerType( myTypes[ i ], myTypeConverters[ i ] )
}
}
var typeConverters = new Array( dependentTypes.length );
var unregisteredTypes = [];
var registered = 0;
dependentTypes.forEach( function ( dt, i ) {
if ( registeredTypes.hasOwnProperty( dt ) ) {
typeConverters[ i ] = registeredTypes[ dt ]
} else {
unregisteredTypes.push( dt );
if ( !awaitingDependencies.hasOwnProperty( dt ) ) {
awaitingDependencies[ dt ] = []
}
awaitingDependencies[ dt ].push( function () {
typeConverters[ i ] = registeredTypes[ dt ];
++registered;
if ( registered === unregisteredTypes.length ) {
onComplete( typeConverters )
}
} )
}
} );
if ( 0 === unregisteredTypes.length ) {
onComplete( typeConverters )
}
}
function __embind_finalize_value_object( structType ) {
var reg = structRegistrations[ structType ];
delete structRegistrations[ structType ];
var rawConstructor = reg.rawConstructor;
var rawDestructor = reg.rawDestructor;
var fieldRecords = reg.fields;
var fieldTypes = fieldRecords.map( function ( field ) {
return field.getterReturnType
} ).concat( fieldRecords.map( function ( field ) {
return field.setterArgumentType
} ) );
whenDependentTypesAreResolved( [ structType ], fieldTypes, function ( fieldTypes ) {
var fields = {};
fieldRecords.forEach( function ( field, i ) {
var fieldName = field.fieldName;
var getterReturnType = fieldTypes[ i ];
var getter = field.getter;
var getterContext = field.getterContext;
var setterArgumentType = fieldTypes[ i + fieldRecords.length ];
var setter = field.setter;
var setterContext = field.setterContext;
fields[ fieldName ] = {
read: function ( ptr ) {
return getterReturnType[ "fromWireType" ]( getter( getterContext, ptr ) )
}, write: function ( ptr, o ) {
var destructors = [];
setter( setterContext, ptr, setterArgumentType[ "toWireType" ]( destructors, o ) );
runDestructors( destructors )
}
}
} );
return [ {
name: reg.name,
"fromWireType": function ( ptr ) {
var rv = {};
for ( var i in fields ) {
rv[ i ] = fields[ i ].read( ptr )
}
rawDestructor( ptr );
return rv
},
"toWireType": function ( destructors, o ) {
for ( var fieldName in fields ) {
if ( !( fieldName in o ) ) {
throw new TypeError( 'Missing field: "' + fieldName + '"' )
}
}
var ptr = rawConstructor();
for ( fieldName in fields ) {
fields[ fieldName ].write( ptr, o[ fieldName ] )
}
if ( destructors !== null ) {
destructors.push( rawDestructor, ptr )
}
return ptr
},
"argPackAdvance": 8,
"readValueFromPointer": simpleReadValueFromPointer,
destructorFunction: rawDestructor
} ]
} )
}
function getShiftFromSize( size ) {
switch ( size ) {
case 1:
return 0;
case 2:
return 1;
case 4:
return 2;
case 8:
return 3;
default:
throw new TypeError( "Unknown type size: " + size )
}
}
function embind_init_charCodes() {
var codes = new Array( 256 );
for ( var i = 0; i < 256; ++i ) {
codes[ i ] = String.fromCharCode( i )
}
embind_charCodes = codes
}
var embind_charCodes = undefined;
function readLatin1String( ptr ) {
var ret = "";
var c = ptr;
while ( HEAPU8[ c ] ) {
ret += embind_charCodes[ HEAPU8[ c++ ] ]
}
return ret
}
var BindingError = undefined;
function throwBindingError( message ) {
throw new BindingError( message )
}
function registerType( rawType, registeredInstance, options ) {
options = options || {};
if ( !( "argPackAdvance" in registeredInstance ) ) {
throw new TypeError( "registerType registeredInstance requires argPackAdvance" )
}
var name = registeredInstance.name;
if ( !rawType ) {
throwBindingError( 'type "' + name + '" must have a positive integer typeid pointer' )
}
if ( registeredTypes.hasOwnProperty( rawType ) ) {
if ( options.ignoreDuplicateRegistrations ) {
return
} else {
throwBindingError( "Cannot register type '" + name + "' twice" )
}
}
registeredTypes[ rawType ] = registeredInstance;
delete typeDependencies[ rawType ];
if ( awaitingDependencies.hasOwnProperty( rawType ) ) {
var callbacks = awaitingDependencies[ rawType ];
delete awaitingDependencies[ rawType ];
callbacks.forEach( function ( cb ) {
cb()
} )
}
}
function __embind_register_bool( rawType, name, size, trueValue, falseValue ) {
var shift = getShiftFromSize( size );
name = readLatin1String( name );
registerType( rawType, {
name: name, "fromWireType": function ( wt ) {
return !!wt
}, "toWireType": function ( destructors, o ) {
return o ? trueValue : falseValue
}, "argPackAdvance": 8, "readValueFromPointer": function ( pointer ) {
var heap;
if ( size === 1 ) {
heap = HEAP8
} else if ( size === 2 ) {
heap = HEAP16
} else if ( size === 4 ) {
heap = HEAP32
} else {
throw new TypeError( "Unknown boolean type size: " + name )
}
return this[ "fromWireType" ]( heap[ pointer >> shift ] )
}, destructorFunction: null
} )
}
function ClassHandle_isAliasOf( other ) {
if ( !( this instanceof ClassHandle ) ) {
return false
}
if ( !( other instanceof ClassHandle ) ) {
return false
}
var leftClass = this.$$.ptrType.registeredClass;
var left = this.$$.ptr;
var rightClass = other.$$.ptrType.registeredClass;
var right = other.$$.ptr;
while ( leftClass.baseClass ) {
left = leftClass.upcast( left );
leftClass = leftClass.baseClass
}
while ( rightClass.baseClass ) {
right = rightClass.upcast( right );
rightClass = rightClass.baseClass
}
return leftClass === rightClass && left === right
}
function shallowCopyInternalPointer( o ) {
return {
count: o.count,
deleteScheduled: o.deleteScheduled,
preservePointerOnDelete: o.preservePointerOnDelete,
ptr: o.ptr,
ptrType: o.ptrType,
smartPtr: o.smartPtr,
smartPtrType: o.smartPtrType
}
}
function throwInstanceAlreadyDeleted( obj ) {
function getInstanceTypeName( handle ) {
return handle.$$.ptrType.registeredClass.name
}
throwBindingError( getInstanceTypeName( obj ) + " instance already deleted" )
}
var finalizationGroup = false;
function detachFinalizer( handle ) {
}
function runDestructor( $$ ) {
if ( $$.smartPtr ) {
$$.smartPtrType.rawDestructor( $$.smartPtr )
} else {
$$.ptrType.registeredClass.rawDestructor( $$.ptr )
}
}
function releaseClassHandle( $$ ) {
$$.count.value -= 1;
var toDelete = 0 === $$.count.value;
if ( toDelete ) {
runDestructor( $$ )
}
}
function attachFinalizer( handle ) {
if ( "undefined" === typeof FinalizationGroup ) {
attachFinalizer = function ( handle ) {
return handle
};
return handle
}
finalizationGroup = new FinalizationGroup( function ( iter ) {
for ( var result = iter.next(); !result.done; result = iter.next() ) {
var $$ = result.value;
if ( !$$.ptr ) {
console.warn( "object already deleted: " + $$.ptr )
} else {
releaseClassHandle( $$ )
}
}
} );
attachFinalizer = function ( handle ) {
finalizationGroup.register( handle, handle.$$, handle.$$ );
return handle
};
detachFinalizer = function ( handle ) {
finalizationGroup.unregister( handle.$$ )
};
return attachFinalizer( handle )
}
function ClassHandle_clone() {
if ( !this.$$.ptr ) {
throwInstanceAlreadyDeleted( this )
}
if ( this.$$.preservePointerOnDelete ) {
this.$$.count.value += 1;
return this
} else {
var clone = attachFinalizer( Object.create( Object.getPrototypeOf( this ), { $$: { value: shallowCopyInternalPointer( this.$$ ) } } ) );
clone.$$.count.value += 1;
clone.$$.deleteScheduled = false;
return clone
}
}
function ClassHandle_delete() {
if ( !this.$$.ptr ) {
throwInstanceAlreadyDeleted( this )
}
if ( this.$$.deleteScheduled && !this.$$.preservePointerOnDelete ) {
throwBindingError( "Object already scheduled for deletion" )
}
detachFinalizer( this );
releaseClassHandle( this.$$ );
if ( !this.$$.preservePointerOnDelete ) {
this.$$.smartPtr = undefined;
this.$$.ptr = undefined
}
}
function ClassHandle_isDeleted() {
return !this.$$.ptr
}
var delayFunction = undefined;
var deletionQueue = [];
function flushPendingDeletes() {
while ( deletionQueue.length ) {
var obj = deletionQueue.pop();
obj.$$.deleteScheduled = false;
obj[ "delete" ]()
}
}
function ClassHandle_deleteLater() {
if ( !this.$$.ptr ) {
throwInstanceAlreadyDeleted( this )
}
if ( this.$$.deleteScheduled && !this.$$.preservePointerOnDelete ) {
throwBindingError( "Object already scheduled for deletion" )
}
deletionQueue.push( this );
if ( deletionQueue.length === 1 && delayFunction ) {
delayFunction( flushPendingDeletes )
}
this.$$.deleteScheduled = true;
return this
}
function init_ClassHandle() {
ClassHandle.prototype[ "isAliasOf" ] = ClassHandle_isAliasOf;
ClassHandle.prototype[ "clone" ] = ClassHandle_clone;
ClassHandle.prototype[ "delete" ] = ClassHandle_delete;
ClassHandle.prototype[ "isDeleted" ] = ClassHandle_isDeleted;
ClassHandle.prototype[ "deleteLater" ] = ClassHandle_deleteLater
}
function ClassHandle() {
}
var registeredPointers = {};
function ensureOverloadTable( proto, methodName, humanName ) {
if ( undefined === proto[ methodName ].overloadTable ) {
var prevFunc = proto[ methodName ];
proto[ methodName ] = function () {
if ( !proto[ methodName ].overloadTable.hasOwnProperty( arguments.length ) ) {
throwBindingError( "Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[ methodName ].overloadTable + ")!" )
}
return proto[ methodName ].overloadTable[ arguments.length ].apply( this, arguments )
};
proto[ methodName ].overloadTable = [];
proto[ methodName ].overloadTable[ prevFunc.argCount ] = prevFunc
}
}
function exposePublicSymbol( name, value, numArguments ) {
if ( Module.hasOwnProperty( name ) ) {
if ( undefined === numArguments || undefined !== Module[ name ].overloadTable && undefined !== Module[ name ].overloadTable[ numArguments ] ) {
throwBindingError( "Cannot register public name '" + name + "' twice" )
}
ensureOverloadTable( Module, name, name );
if ( Module.hasOwnProperty( numArguments ) ) {
throwBindingError( "Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!" )
}
Module[ name ].overloadTable[ numArguments ] = value
} else {
Module[ name ] = value;
if ( undefined !== numArguments ) {
Module[ name ].numArguments = numArguments
}
}
}
function RegisteredClass( name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast ) {
this.name = name;
this.constructor = constructor;
this.instancePrototype = instancePrototype;
this.rawDestructor = rawDestructor;
this.baseClass = baseClass;
this.getActualType = getActualType;
this.upcast = upcast;
this.downcast = downcast;
this.pureVirtualFunctions = []
}
function upcastPointer( ptr, ptrClass, desiredClass ) {
while ( ptrClass !== desiredClass ) {
if ( !ptrClass.upcast ) {
throwBindingError( "Expected null or instance of " + desiredClass.name + ", got an instance of " + ptrClass.name )
}
ptr = ptrClass.upcast( ptr );
ptrClass = ptrClass.baseClass
}
return ptr
}
function constNoSmartPtrRawPointerToWireType( destructors, handle ) {
if ( handle === null ) {
if ( this.isReference ) {
throwBindingError( "null is not a valid " + this.name )
}
return 0
}
if ( !handle.$$ ) {
throwBindingError( 'Cannot pass "' + _embind_repr( handle ) + '" as a ' + this.name )
}
if ( !handle.$$.ptr ) {
throwBindingError( "Cannot pass deleted object as a pointer of type " + this.name )
}
var handleClass = handle.$$.ptrType.registeredClass;
var ptr = upcastPointer( handle.$$.ptr, handleClass, this.registeredClass );
return ptr
}
function genericPointerToWireType( destructors, handle ) {
var ptr;
if ( handle === null ) {
if ( this.isReference ) {
throwBindingError( "null is not a valid " + this.name )
}
if ( this.isSmartPointer ) {
ptr = this.rawConstructor();
if ( destructors !== null ) {
destructors.push( this.rawDestructor, ptr )
}
return ptr
} else {
return 0
}
}
if ( !handle.$$ ) {
throwBindingError( 'Cannot pass "' + _embind_repr( handle ) + '" as a ' + this.name )
}
if ( !handle.$$.ptr ) {
throwBindingError( "Cannot pass deleted object as a pointer of type " + this.name )
}
if ( !this.isConst && handle.$$.ptrType.isConst ) {
throwBindingError( "Cannot convert argument of type " + ( handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name ) + " to parameter type " + this.name )
}
var handleClass = handle.$$.ptrType.registeredClass;
ptr = upcastPointer( handle.$$.ptr, handleClass, this.registeredClass );
if ( this.isSmartPointer ) {
if ( undefined === handle.$$.smartPtr ) {
throwBindingError( "Passing raw pointer to smart pointer is illegal" )
}
switch ( this.sharingPolicy ) {
case 0:
if ( handle.$$.smartPtrType === this ) {
ptr = handle.$$.smartPtr
} else {
throwBindingError( "Cannot convert argument of type " + ( handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name ) + " to parameter type " + this.name )
}
break;
case 1:
ptr = handle.$$.smartPtr;
break;
case 2:
if ( handle.$$.smartPtrType === this ) {
ptr = handle.$$.smartPtr
} else {
var clonedHandle = handle[ "clone" ]();
ptr = this.rawShare( ptr, __emval_register( function () {
clonedHandle[ "delete" ]()
} ) );
if ( destructors !== null ) {
destructors.push( this.rawDestructor, ptr )
}
}
break;
default:
throwBindingError( "Unsupporting sharing policy" )
}
}
return ptr
}
function nonConstNoSmartPtrRawPointerToWireType( destructors, handle ) {
if ( handle === null ) {
if ( this.isReference ) {
throwBindingError( "null is not a valid " + this.name )
}
return 0
}
if ( !handle.$$ ) {
throwBindingError( 'Cannot pass "' + _embind_repr( handle ) + '" as a ' + this.name )
}
if ( !handle.$$.ptr ) {
throwBindingError( "Cannot pass deleted object as a pointer of type " + this.name )
}
if ( handle.$$.ptrType.isConst ) {
throwBindingError( "Cannot convert argument of type " + handle.$$.ptrType.name + " to parameter type " + this.name )
}
var handleClass = handle.$$.ptrType.registeredClass;
var ptr = upcastPointer( handle.$$.ptr, handleClass, this.registeredClass );
return ptr
}
function RegisteredPointer_getPointee( ptr ) {
if ( this.rawGetPointee ) {
ptr = this.rawGetPointee( ptr )
}
return ptr
}
function RegisteredPointer_destructor( ptr ) {
if ( this.rawDestructor ) {
this.rawDestructor( ptr )
}
}
function RegisteredPointer_deleteObject( handle ) {
if ( handle !== null ) {
handle[ "delete" ]()
}
}
function downcastPointer( ptr, ptrClass, desiredClass ) {
if ( ptrClass === desiredClass ) {
return ptr
}
if ( undefined === desiredClass.baseClass ) {
return null
}
var rv = downcastPointer( ptr, ptrClass, desiredClass.baseClass );
if ( rv === null ) {
return null
}
return desiredClass.downcast( rv )
}
function getInheritedInstanceCount() {
return Object.keys( registeredInstances ).length
}
function getLiveInheritedInstances() {
var rv = [];
for ( var k in registeredInstances ) {
if ( registeredInstances.hasOwnProperty( k ) ) {
rv.push( registeredInstances[ k ] )
}
}
return rv
}
function setDelayFunction( fn ) {
delayFunction = fn;
if ( deletionQueue.length && delayFunction ) {
delayFunction( flushPendingDeletes )
}
}
function init_embind() {
Module[ "getInheritedInstanceCount" ] = getInheritedInstanceCount;
Module[ "getLiveInheritedInstances" ] = getLiveInheritedInstances;
Module[ "flushPendingDeletes" ] = flushPendingDeletes;
Module[ "setDelayFunction" ] = setDelayFunction
}
var registeredInstances = {};
function getBasestPointer( class_, ptr ) {
if ( ptr === undefined ) {
throwBindingError( "ptr should not be undefined" )
}
while ( class_.baseClass ) {
ptr = class_.upcast( ptr );
class_ = class_.baseClass
}
return ptr
}
function getInheritedInstance( class_, ptr ) {
ptr = getBasestPointer( class_, ptr );
return registeredInstances[ ptr ]
}
function makeClassHandle( prototype, record ) {
if ( !record.ptrType || !record.ptr ) {
throwInternalError( "makeClassHandle requires ptr and ptrType" )
}
var hasSmartPtrType = !!record.smartPtrType;
var hasSmartPtr = !!record.smartPtr;
if ( hasSmartPtrType !== hasSmartPtr ) {
throwInternalError( "Both smartPtrType and smartPtr must be specified" )
}
record.count = { value: 1 };
return attachFinalizer( Object.create( prototype, { $$: { value: record } } ) )
}
function RegisteredPointer_fromWireType( ptr ) {
var rawPointer = this.getPointee( ptr );
if ( !rawPointer ) {
this.destructor( ptr );
return null
}
var registeredInstance = getInheritedInstance( this.registeredClass, rawPointer );
if ( undefined !== registeredInstance ) {
if ( 0 === registeredInstance.$$.count.value ) {
registeredInstance.$$.ptr = rawPointer;
registeredInstance.$$.smartPtr = ptr;
return registeredInstance[ "clone" ]()
} else {
var rv = registeredInstance[ "clone" ]();
this.destructor( ptr );
return rv
}
}
function makeDefaultHandle() {
if ( this.isSmartPointer ) {
return makeClassHandle( this.registeredClass.instancePrototype, {
ptrType: this.pointeeType,
ptr: rawPointer,
smartPtrType: this,
smartPtr: ptr
} )
} else {
return makeClassHandle( this.registeredClass.instancePrototype, { ptrType: this, ptr: ptr } )
}
}
var actualType = this.registeredClass.getActualType( rawPointer );
var registeredPointerRecord = registeredPointers[ actualType ];
if ( !registeredPointerRecord ) {
return makeDefaultHandle.call( this )
}
var toType;
if ( this.isConst ) {
toType = registeredPointerRecord.constPointerType
} else {
toType = registeredPointerRecord.pointerType
}
var dp = downcastPointer( rawPointer, this.registeredClass, toType.registeredClass );
if ( dp === null ) {
return makeDefaultHandle.call( this )
}
if ( this.isSmartPointer ) {
return makeClassHandle( toType.registeredClass.instancePrototype, {
ptrType: toType,
ptr: dp,
smartPtrType: this,
smartPtr: ptr
} )
} else {
return makeClassHandle( toType.registeredClass.instancePrototype, { ptrType: toType, ptr: dp } )
}
}
function init_RegisteredPointer() {
RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee;
RegisteredPointer.prototype.destructor = RegisteredPointer_destructor;
RegisteredPointer.prototype[ "argPackAdvance" ] = 8;
RegisteredPointer.prototype[ "readValueFromPointer" ] = simpleReadValueFromPointer;
RegisteredPointer.prototype[ "deleteObject" ] = RegisteredPointer_deleteObject;
RegisteredPointer.prototype[ "fromWireType" ] = RegisteredPointer_fromWireType
}
function RegisteredPointer( name, registeredClass, isReference, isConst, isSmartPointer, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor ) {
this.name = name;
this.registeredClass = registeredClass;
this.isReference = isReference;
this.isConst = isConst;
this.isSmartPointer = isSmartPointer;
this.pointeeType = pointeeType;
this.sharingPolicy = sharingPolicy;
this.rawGetPointee = rawGetPointee;
this.rawConstructor = rawConstructor;
this.rawShare = rawShare;
this.rawDestructor = rawDestructor;
if ( !isSmartPointer && registeredClass.baseClass === undefined ) {
if ( isConst ) {
this[ "toWireType" ] = constNoSmartPtrRawPointerToWireType;
this.destructorFunction = null
} else {
this[ "toWireType" ] = nonConstNoSmartPtrRawPointerToWireType;
this.destructorFunction = null
}
} else {
this[ "toWireType" ] = genericPointerToWireType
}
}
function replacePublicSymbol( name, value, numArguments ) {
if ( !Module.hasOwnProperty( name ) ) {
throwInternalError( "Replacing nonexistant public symbol" )
}
if ( undefined !== Module[ name ].overloadTable && undefined !== numArguments ) {
Module[ name ].overloadTable[ numArguments ] = value
} else {
Module[ name ] = value;
Module[ name ].argCount = numArguments
}
}
function dynCallLegacy( sig, ptr, args ) {
if ( args && args.length ) {
return Module[ "dynCall_" + sig ].apply( null, [ ptr ].concat( args ) )
}
return Module[ "dynCall_" + sig ].call( null, ptr )
}
function dynCall( sig, ptr, args ) {
if ( sig.indexOf( "j" ) != -1 ) {
return dynCallLegacy( sig, ptr, args )
}
return wasmTable.get( ptr ).apply( null, args )
}
function getDynCaller( sig, ptr ) {
assert( sig.indexOf( "j" ) >= 0, "getDynCaller should only be called with i64 sigs" );
var argCache = [];
return function () {
argCache.length = arguments.length;
for ( var i = 0; i < arguments.length; i++ ) {
argCache[ i ] = arguments[ i ]
}
return dynCall( sig, ptr, argCache )
}
}
function embind__requireFunction( signature, rawFunction ) {
signature = readLatin1String( signature );
function makeDynCaller() {
if ( signature.indexOf( "j" ) != -1 ) {
return getDynCaller( signature, rawFunction )
}
return wasmTable.get( rawFunction )
}
var fp = makeDynCaller();
if ( typeof fp !== "function" ) {
throwBindingError( "unknown function pointer with signature " + signature + ": " + rawFunction )
}
return fp
}
var UnboundTypeError = undefined;
function getTypeName( type ) {
var ptr = ___getTypeName( type );
var rv = readLatin1String( ptr );
_free( ptr );
return rv
}
function throwUnboundTypeError( message, types ) {
var unboundTypes = [];
var seen = {};
function visit( type ) {
if ( seen[ type ] ) {
return
}
if ( registeredTypes[ type ] ) {
return
}
if ( typeDependencies[ type ] ) {
typeDependencies[ type ].forEach( visit );
return
}
unboundTypes.push( type );
seen[ type ] = true
}
types.forEach( visit );
throw new UnboundTypeError( message + ": " + unboundTypes.map( getTypeName ).join( [ ", " ] ) )
}
function __embind_register_class( rawType, rawPointerType, rawConstPointerType, baseClassRawType, getActualTypeSignature, getActualType, upcastSignature, upcast, downcastSignature, downcast, name, destructorSignature, rawDestructor ) {
name = readLatin1String( name );
getActualType = embind__requireFunction( getActualTypeSignature, getActualType );
if ( upcast ) {
upcast = embind__requireFunction( upcastSignature, upcast )
}
if ( downcast ) {
downcast = embind__requireFunction( downcastSignature, downcast )
}
rawDestructor = embind__requireFunction( destructorSignature, rawDestructor );
var legalFunctionName = makeLegalFunctionName( name );
exposePublicSymbol( legalFunctionName, function () {
throwUnboundTypeError( "Cannot construct " + name + " due to unbound types", [ baseClassRawType ] )
} );
whenDependentTypesAreResolved( [ rawType, rawPointerType, rawConstPointerType ], baseClassRawType ? [ baseClassRawType ] : [], function ( base ) {
base = base[ 0 ];
var baseClass;
var basePrototype;
if ( baseClassRawType ) {
baseClass = base.registeredClass;
basePrototype = baseClass.instancePrototype
} else {
basePrototype = ClassHandle.prototype
}
var constructor = createNamedFunction( legalFunctionName, function () {
if ( Object.getPrototypeOf( this ) !== instancePrototype ) {
throw new BindingError( "Use 'new' to construct " + name )
}
if ( undefined === registeredClass.constructor_body ) {
throw new BindingError( name + " has no accessible constructor" )
}
var body = registeredClass.constructor_body[ arguments.length ];
if ( undefined === body ) {
throw new BindingError( "Tried to invoke ctor of " + name + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys( registeredClass.constructor_body ).toString() + ") parameters instead!" )
}
return body.apply( this, arguments )
} );
var instancePrototype = Object.create( basePrototype, { constructor: { value: constructor } } );
constructor.prototype = instancePrototype;
var registeredClass = new RegisteredClass( name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast );
var referenceConverter = new RegisteredPointer( name, registeredClass, true, false, false );
var pointerConverter = new RegisteredPointer( name + "*", registeredClass, false, false, false );
var constPointerConverter = new RegisteredPointer( name + " const*", registeredClass, false, true, false );
registeredPointers[ rawType ] = {
pointerType: pointerConverter,
constPointerType: constPointerConverter
};
replacePublicSymbol( legalFunctionName, constructor );
return [ referenceConverter, pointerConverter, constPointerConverter ]
} )
}
function heap32VectorToArray( count, firstElement ) {
var array = [];
for ( var i = 0; i < count; i++ ) {
array.push( HEAP32[ ( firstElement >> 2 ) + i ] )
}
return array
}
function __embind_register_class_constructor( rawClassType, argCount, rawArgTypesAddr, invokerSignature, invoker, rawConstructor ) {
assert( argCount > 0 );
var rawArgTypes = heap32VectorToArray( argCount, rawArgTypesAddr );
invoker = embind__requireFunction( invokerSignature, invoker );
var args = [ rawConstructor ];
var destructors = [];
whenDependentTypesAreResolved( [], [ rawClassType ], function ( classType ) {
classType = classType[ 0 ];
var humanName = "constructor " + classType.name;
if ( undefined === classType.registeredClass.constructor_body ) {
classType.registeredClass.constructor_body = []
}
if ( undefined !== classType.registeredClass.constructor_body[ argCount - 1 ] ) {
throw new BindingError( "Cannot register multiple constructors with identical number of parameters (" + ( argCount - 1 ) + ") for class '" + classType.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!" )
}
classType.registeredClass.constructor_body[ argCount - 1 ] = function unboundTypeHandler() {
throwUnboundTypeError( "Cannot construct " + classType.name + " due to unbound types", rawArgTypes )
};
whenDependentTypesAreResolved( [], rawArgTypes, function ( argTypes ) {
classType.registeredClass.constructor_body[ argCount - 1 ] = function constructor_body() {
if ( arguments.length !== argCount - 1 ) {
throwBindingError( humanName + " called with " + arguments.length + " arguments, expected " + ( argCount - 1 ) )
}
destructors.length = 0;
args.length = argCount;
for ( var i = 1; i < argCount; ++i ) {
args[ i ] = argTypes[ i ][ "toWireType" ]( destructors, arguments[ i - 1 ] )
}
var ptr = invoker.apply( null, args );
runDestructors( destructors );
return argTypes[ 0 ][ "fromWireType" ]( ptr )
};
return []
} );
return []
} )
}
function new_( constructor, argumentList ) {
if ( !( constructor instanceof Function ) ) {
throw new TypeError( "new_ called with constructor type " + typeof constructor + " which is not a function" )
}
var dummy = createNamedFunction( constructor.name || "unknownFunctionName", function () {
} );
dummy.prototype = constructor.prototype;
var obj = new dummy;
var r = constructor.apply( obj, argumentList );
return r instanceof Object ? r : obj
}
function craftInvokerFunction( humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc ) {
var argCount = argTypes.length;
if ( argCount < 2 ) {
throwBindingError( "argTypes array size mismatch! Must at least get return value and 'this' types!" )
}
var isClassMethodFunc = argTypes[ 1 ] !== null && classType !== null;
var needsDestructorStack = false;
for ( var i = 1; i < argTypes.length; ++i ) {
if ( argTypes[ i ] !== null && argTypes[ i ].destructorFunction === undefined ) {
needsDestructorStack = true;
break
}
}
var returns = argTypes[ 0 ].name !== "void";
var argsList = "";
var argsListWired = "";
for ( var i = 0; i < argCount - 2; ++i ) {
argsList += ( i !== 0 ? ", " : "" ) + "arg" + i;
argsListWired += ( i !== 0 ? ", " : "" ) + "arg" + i + "Wired"
}
var invokerFnBody = "return function " + makeLegalFunctionName( humanName ) + "(" + argsList + ") {\n" + "if (arguments.length !== " + ( argCount - 2 ) + ") {\n" + "throwBindingError('function " + humanName + " called with ' + arguments.length + ' arguments, expected " + ( argCount - 2 ) + " args!');\n" + "}\n";
if ( needsDestructorStack ) {
invokerFnBody += "var destructors = [];\n"
}
var dtorStack = needsDestructorStack ? "destructors" : "null";
var args1 = [ "throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam" ];
var args2 = [ throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[ 0 ], argTypes[ 1 ] ];
if ( isClassMethodFunc ) {
invokerFnBody += "var thisWired = classParam.toWireType(" + dtorStack + ", this);\n"
}
for ( var i = 0; i < argCount - 2; ++i ) {
invokerFnBody += "var arg" + i + "Wired = argType" + i + ".toWireType(" + dtorStack + ", arg" + i + "); // " + argTypes[ i + 2 ].name + "\n";
args1.push( "argType" + i );
args2.push( argTypes[ i + 2 ] )
}
if ( isClassMethodFunc ) {
argsListWired = "thisWired" + ( argsListWired.length > 0 ? ", " : "" ) + argsListWired
}
invokerFnBody += ( returns ? "var rv = " : "" ) + "invoker(fn" + ( argsListWired.length > 0 ? ", " : "" ) + argsListWired + ");\n";
if ( needsDestructorStack ) {
invokerFnBody += "runDestructors(destructors);\n"
} else {
for ( var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i ) {
var paramName = i === 1 ? "thisWired" : "arg" + ( i - 2 ) + "Wired";
if ( argTypes[ i ].destructorFunction !== null ) {
invokerFnBody += paramName + "_dtor(" + paramName + "); // " + argTypes[ i ].name + "\n";
args1.push( paramName + "_dtor" );
args2.push( argTypes[ i ].destructorFunction )
}
}
}
if ( returns ) {
invokerFnBody += "var ret = retType.fromWireType(rv);\n" + "return ret;\n"
} else {
}
invokerFnBody += "}\n";
args1.push( invokerFnBody );
var invokerFunction = new_( Function, args1 ).apply( null, args2 );
return invokerFunction
}
function __embind_register_class_function( rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, context, isPureVirtual ) {
var rawArgTypes = heap32VectorToArray( argCount, rawArgTypesAddr );
methodName = readLatin1String( methodName );
rawInvoker = embind__requireFunction( invokerSignature, rawInvoker );
whenDependentTypesAreResolved( [], [ rawClassType ], function ( classType ) {
classType = classType[ 0 ];
var humanName = classType.name + "." + methodName;
if ( isPureVirtual ) {
classType.registeredClass.pureVirtualFunctions.push( methodName )
}
function unboundTypesHandler() {
throwUnboundTypeError( "Cannot call " + humanName + " due to unbound types", rawArgTypes )
}
var proto = classType.registeredClass.instancePrototype;
var method = proto[ methodName ];
if ( undefined === method || undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2 ) {
unboundTypesHandler.argCount = argCount - 2;
unboundTypesHandler.className = classType.name;
proto[ methodName ] = unboundTypesHandler
} else {
ensureOverloadTable( proto, methodName, humanName );
proto[ methodName ].overloadTable[ argCount - 2 ] = unboundTypesHandler
}
whenDependentTypesAreResolved( [], rawArgTypes, function ( argTypes ) {
var memberFunction = craftInvokerFunction( humanName, argTypes, classType, rawInvoker, context );
if ( undefined === proto[ methodName ].overloadTable ) {
memberFunction.argCount = argCount - 2;
proto[ methodName ] = memberFunction
} else {
proto[ methodName ].overloadTable[ argCount - 2 ] = memberFunction
}
return []
} );
return []
} )
}
var emval_free_list = [];
var emval_handle_array = [ {}, { value: undefined }, { value: null }, { value: true }, { value: false } ];
function __emval_decref( handle ) {
if ( handle > 4 && 0 === --emval_handle_array[ handle ].refcount ) {
emval_handle_array[ handle ] = undefined;
emval_free_list.push( handle )
}
}
function count_emval_handles() {
var count = 0;
for ( var i = 5; i < emval_handle_array.length; ++i ) {
if ( emval_handle_array[ i ] !== undefined ) {
++count
}
}
return count
}
function get_first_emval() {
for ( var i = 5; i < emval_handle_array.length; ++i ) {
if ( emval_handle_array[ i ] !== undefined ) {
return emval_handle_array[ i ]
}
}
return null
}
function init_emval() {
Module[ "count_emval_handles" ] = count_emval_handles;
Module[ "get_first_emval" ] = get_first_emval
}
function __emval_register( value ) {
switch ( value ) {
case undefined: {
return 1
}
case null: {
return 2
}
case true: {
return 3
}
case false: {
return 4
}
default: {
var handle = emval_free_list.length ? emval_free_list.pop() : emval_handle_array.length;
emval_handle_array[ handle ] = { refcount: 1, value: value };
return handle
}
}
}
function __embind_register_emval( rawType, name ) {
name = readLatin1String( name );
registerType( rawType, {
name: name, "fromWireType": function ( handle ) {
var rv = emval_handle_array[ handle ].value;
__emval_decref( handle );
return rv
}, "toWireType": function ( destructors, value ) {
return __emval_register( value )
}, "argPackAdvance": 8, "readValueFromPointer": simpleReadValueFromPointer, destructorFunction: null
} )
}
function enumReadValueFromPointer( name, shift, signed ) {
switch ( shift ) {
case 0:
return function ( pointer ) {
var heap = signed ? HEAP8 : HEAPU8;
return this[ "fromWireType" ]( heap[ pointer ] )
};
case 1:
return function ( pointer ) {
var heap = signed ? HEAP16 : HEAPU16;
return this[ "fromWireType" ]( heap[ pointer >> 1 ] )
};
case 2:
return function ( pointer ) {
var heap = signed ? HEAP32 : HEAPU32;
return this[ "fromWireType" ]( heap[ pointer >> 2 ] )
};
default:
throw new TypeError( "Unknown integer type: " + name )
}
}
function __embind_register_enum( rawType, name, size, isSigned ) {
var shift = getShiftFromSize( size );
name = readLatin1String( name );
function ctor() {
}
ctor.values = {};
registerType( rawType, {
name: name,
constructor: ctor,
"fromWireType": function ( c ) {
return this.constructor.values[ c ]
},
"toWireType": function ( destructors, c ) {
return c.value
},
"argPackAdvance": 8,
"readValueFromPointer": enumReadValueFromPointer( name, shift, isSigned ),
destructorFunction: null
} );
exposePublicSymbol( name, ctor )
}
function requireRegisteredType( rawType, humanName ) {
var impl = registeredTypes[ rawType ];
if ( undefined === impl ) {
throwBindingError( humanName + " has unknown type " + getTypeName( rawType ) )
}
return impl
}
function __embind_register_enum_value( rawEnumType, name, enumValue ) {
var enumType = requireRegisteredType( rawEnumType, "enum" );
name = readLatin1String( name );
var Enum = enumType.constructor;
var Value = Object.create( enumType.constructor.prototype, {
value: { value: enumValue },
constructor: {
value: createNamedFunction( enumType.name + "_" + name, function () {
} )
}
} );
Enum.values[ enumValue ] = Value;
Enum[ name ] = Value
}
function _embind_repr( v ) {
if ( v === null ) {
return "null"
}
var t = typeof v;
if ( t === "object" || t === "array" || t === "function" ) {
return v.toString()
} else {
return "" + v
}
}
function floatReadValueFromPointer( name, shift ) {
switch ( shift ) {
case 2:
return function ( pointer ) {
return this[ "fromWireType" ]( HEAPF32[ pointer >> 2 ] )
};
case 3:
return function ( pointer ) {
return this[ "fromWireType" ]( HEAPF64[ pointer >> 3 ] )
};
default:
throw new TypeError( "Unknown float type: " + name )
}
}
function __embind_register_float( rawType, name, size ) {
var shift = getShiftFromSize( size );
name = readLatin1String( name );
registerType( rawType, {
name: name,
"fromWireType": function ( value ) {
return value
},
"toWireType": function ( destructors, value ) {
if ( typeof value !== "number" && typeof value !== "boolean" ) {
throw new TypeError( 'Cannot convert "' + _embind_repr( value ) + '" to ' + this.name )
}
return value
},
"argPackAdvance": 8,
"readValueFromPointer": floatReadValueFromPointer( name, shift ),
destructorFunction: null
} )
}
function __embind_register_function( name, argCount, rawArgTypesAddr, signature, rawInvoker, fn ) {
var argTypes = heap32VectorToArray( argCount, rawArgTypesAddr );
name = readLatin1String( name );
rawInvoker = embind__requireFunction( signature, rawInvoker );
exposePublicSymbol( name, function () {
throwUnboundTypeError( "Cannot call " + name + " due to unbound types", argTypes )
}, argCount - 1 );
whenDependentTypesAreResolved( [], argTypes, function ( argTypes ) {
var invokerArgsArray = [ argTypes[ 0 ], null ].concat( argTypes.slice( 1 ) );
replacePublicSymbol( name, craftInvokerFunction( name, invokerArgsArray, null, rawInvoker, fn ), argCount - 1 );
return []
} )
}
function integerReadValueFromPointer( name, shift, signed ) {
switch ( shift ) {
case 0:
return signed ? function readS8FromPointer( pointer ) {
return HEAP8[ pointer ]
} : function readU8FromPointer( pointer ) {
return HEAPU8[ pointer ]
};
case 1:
return signed ? function readS16FromPointer( pointer ) {
return HEAP16[ pointer >> 1 ]
} : function readU16FromPointer( pointer ) {
return HEAPU16[ pointer >> 1 ]
};
case 2:
return signed ? function readS32FromPointer( pointer ) {
return HEAP32[ pointer >> 2 ]
} : function readU32FromPointer( pointer ) {
return HEAPU32[ pointer >> 2 ]
};
default:
throw new TypeError( "Unknown integer type: " + name )
}
}
function __embind_register_integer( primitiveType, name, size, minRange, maxRange ) {
name = readLatin1String( name );
if ( maxRange === -1 ) {
maxRange = 4294967295
}
var shift = getShiftFromSize( size );
var fromWireType = function ( value ) {
return value
};
if ( minRange === 0 ) {
var bitshift = 32 - 8 * size;
fromWireType = function ( value ) {
return value << bitshift >>> bitshift
}
}
var isUnsignedType = name.indexOf( "unsigned" ) != -1;
registerType( primitiveType, {
name: name,
"fromWireType": fromWireType,
"toWireType": function ( destructors, value ) {
if ( typeof value !== "number" && typeof value !== "boolean" ) {
throw new TypeError( 'Cannot convert "' + _embind_repr( value ) + '" to ' + this.name )
}
if ( value < minRange || value > maxRange ) {
throw new TypeError( 'Passing a number "' + _embind_repr( value ) + '" from JS side to C/C++ side to an argument of type "' + name + '", which is outside the valid range [' + minRange + ", " + maxRange + "]!" )
}
return isUnsignedType ? value >>> 0 : value | 0
},
"argPackAdvance": 8,
"readValueFromPointer": integerReadValueFromPointer( name, shift, minRange !== 0 ),
destructorFunction: null
} )
}
function __embind_register_memory_view( rawType, dataTypeIndex, name ) {
var typeMapping = [ Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array ];
var TA = typeMapping[ dataTypeIndex ];
function decodeMemoryView( handle ) {
handle = handle >> 2;
var heap = HEAPU32;
var size = heap[ handle ];
var data = heap[ handle + 1 ];
return new TA( buffer, data, size )
}
name = readLatin1String( name );
registerType( rawType, {
name: name,
"fromWireType": decodeMemoryView,
"argPackAdvance": 8,
"readValueFromPointer": decodeMemoryView
}, { ignoreDuplicateRegistrations: true } )
}
function __embind_register_std_string( rawType, name ) {
name = readLatin1String( name );
var stdStringIsUTF8 = name === "std::string";
registerType( rawType, {
name: name,
"fromWireType": function ( value ) {
var length = HEAPU32[ value >> 2 ];
var str;
if ( stdStringIsUTF8 ) {
var decodeStartPtr = value + 4;
for ( var i = 0; i <= length; ++i ) {
var currentBytePtr = value + 4 + i;
if ( i == length || HEAPU8[ currentBytePtr ] == 0 ) {
var maxRead = currentBytePtr - decodeStartPtr;
var stringSegment = UTF8ToString( decodeStartPtr, maxRead );
if ( str === undefined ) {
str = stringSegment
} else {
str += String.fromCharCode( 0 );
str += stringSegment
}
decodeStartPtr = currentBytePtr + 1
}
}
} else {
var a = new Array( length );
for ( var i = 0; i < length; ++i ) {
a[ i ] = String.fromCharCode( HEAPU8[ value + 4 + i ] )
}
str = a.join( "" )
}
_free( value );
return str
},
"toWireType": function ( destructors, value ) {
if ( value instanceof ArrayBuffer ) {
value = new Uint8Array( value )
}
var getLength;
var valueIsOfTypeString = typeof value === "string";
if ( !( valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array ) ) {
throwBindingError( "Cannot pass non-string to std::string" )
}
if ( stdStringIsUTF8 && valueIsOfTypeString ) {
getLength = function () {
return lengthBytesUTF8( value )
}
} else {
getLength = function () {
return value.length
}
}
var length = getLength();
var ptr = _malloc( 4 + length + 1 );
HEAPU32[ ptr >> 2 ] = length;
if ( stdStringIsUTF8 && valueIsOfTypeString ) {
stringToUTF8( value, ptr + 4, length + 1 )
} else {
if ( valueIsOfTypeString ) {
for ( var i = 0; i < length; ++i ) {
var charCode = value.charCodeAt( i );
if ( charCode > 255 ) {
_free( ptr );
throwBindingError( "String has UTF-16 code units that do not fit in 8 bits" )
}
HEAPU8[ ptr + 4 + i ] = charCode
}
} else {
for ( var i = 0; i < length; ++i ) {
HEAPU8[ ptr + 4 + i ] = value[ i ]
}
}
}
if ( destructors !== null ) {
destructors.push( _free, ptr )
}
return ptr
},
"argPackAdvance": 8,
"readValueFromPointer": simpleReadValueFromPointer,
destructorFunction: function ( ptr ) {
_free( ptr )
}
} )
}
function __embind_register_std_wstring( rawType, charSize, name ) {
name = readLatin1String( name );
var decodeString, encodeString, getHeap, lengthBytesUTF, shift;
if ( charSize === 2 ) {
decodeString = UTF16ToString;
encodeString = stringToUTF16;
lengthBytesUTF = lengthBytesUTF16;
getHeap = function () {
return HEAPU16
};
shift = 1
} else if ( charSize === 4 ) {
decodeString = UTF32ToString;
encodeString = stringToUTF32;
lengthBytesUTF = lengthBytesUTF32;
getHeap = function () {
return HEAPU32
};
shift = 2
}
registerType( rawType, {
name: name,
"fromWireType": function ( value ) {
var length = HEAPU32[ value >> 2 ];
var HEAP = getHeap();
var str;
var decodeStartPtr = value + 4;
for ( var i = 0; i <= length; ++i ) {
var currentBytePtr = value + 4 + i * charSize;
if ( i == length || HEAP[ currentBytePtr >> shift ] == 0 ) {
var maxReadBytes = currentBytePtr - decodeStartPtr;
var stringSegment = decodeString( decodeStartPtr, maxReadBytes );
if ( str === undefined ) {
str = stringSegment
} else {
str += String.fromCharCode( 0 );
str += stringSegment
}
decodeStartPtr = currentBytePtr + charSize
}
}
_free( value );
return str
},
"toWireType": function ( destructors, value ) {
if ( !( typeof value === "string" ) ) {
throwBindingError( "Cannot pass non-string to C++ string type " + name )
}
var length = lengthBytesUTF( value );
var ptr = _malloc( 4 + length + charSize );
HEAPU32[ ptr >> 2 ] = length >> shift;
encodeString( value, ptr + 4, length + charSize );
if ( destructors !== null ) {
destructors.push( _free, ptr )
}
return ptr
},
"argPackAdvance": 8,
"readValueFromPointer": simpleReadValueFromPointer,
destructorFunction: function ( ptr ) {
_free( ptr )
}
} )
}
function __embind_register_value_object( rawType, name, constructorSignature, rawConstructor, destructorSignature, rawDestructor ) {
structRegistrations[ rawType ] = {
name: readLatin1String( name ),
rawConstructor: embind__requireFunction( constructorSignature, rawConstructor ),
rawDestructor: embind__requireFunction( destructorSignature, rawDestructor ),
fields: []
}
}
function __embind_register_value_object_field( structType, fieldName, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext ) {
structRegistrations[ structType ].fields.push( {
fieldName: readLatin1String( fieldName ),
getterReturnType: getterReturnType,
getter: embind__requireFunction( getterSignature, getter ),
getterContext: getterContext,
setterArgumentType: setterArgumentType,
setter: embind__requireFunction( setterSignature, setter ),
setterContext: setterContext
} )
}
function __embind_register_void( rawType, name ) {
name = readLatin1String( name );
registerType( rawType, {
isVoid: true, name: name, "argPackAdvance": 0, "fromWireType": function () {
return undefined
}, "toWireType": function ( destructors, o ) {
return undefined
}
} )
}
function requireHandle( handle ) {
if ( !handle ) {
throwBindingError( "Cannot use deleted val. handle = " + handle )
}
return emval_handle_array[ handle ].value
}
function __emval_as( handle, returnType, destructorsRef ) {
handle = requireHandle( handle );
returnType = requireRegisteredType( returnType, "emval::as" );
var destructors = [];
var rd = __emval_register( destructors );
HEAP32[ destructorsRef >> 2 ] = rd;
return returnType[ "toWireType" ]( destructors, handle )
}
var emval_symbols = {};
function getStringOrSymbol( address ) {
var symbol = emval_symbols[ address ];
if ( symbol === undefined ) {
return readLatin1String( address )
} else {
return symbol
}
}
var emval_methodCallers = [];
function __emval_call_void_method( caller, handle, methodName, args ) {
caller = emval_methodCallers[ caller ];
handle = requireHandle( handle );
methodName = getStringOrSymbol( methodName );
caller( handle, methodName, null, args )
}
function emval_get_global() {
if ( typeof globalThis === "object" ) {
return globalThis
}
return function () {
return Function
}()( "return this" )()
}
function __emval_get_global( name ) {
if ( name === 0 ) {
return __emval_register( emval_get_global() )
} else {
name = getStringOrSymbol( name );
return __emval_register( emval_get_global()[ name ] )
}
}
function __emval_addMethodCaller( caller ) {
var id = emval_methodCallers.length;
emval_methodCallers.push( caller );
return id
}
function __emval_lookupTypes( argCount, argTypes ) {
var a = new Array( argCount );
for ( var i = 0; i < argCount; ++i ) {
a[ i ] = requireRegisteredType( HEAP32[ ( argTypes >> 2 ) + i ], "parameter " + i )
}
return a
}
function __emval_get_method_caller( argCount, argTypes ) {
var types = __emval_lookupTypes( argCount, argTypes );
var retType = types[ 0 ];
var signatureName = retType.name + "_$" + types.slice( 1 ).map( function ( t ) {
return t.name
} ).join( "_" ) + "$";
var params = [ "retType" ];
var args = [ retType ];
var argsList = "";
for ( var i = 0; i < argCount - 1; ++i ) {
argsList += ( i !== 0 ? ", " : "" ) + "arg" + i;
params.push( "argType" + i );
args.push( types[ 1 + i ] )
}
var functionName = makeLegalFunctionName( "methodCaller_" + signatureName );
var functionBody = "return function " + functionName + "(handle, name, destructors, args) {\n";
var offset = 0;
for ( var i = 0; i < argCount - 1; ++i ) {
functionBody += " var arg" + i + " = argType" + i + ".readValueFromPointer(args" + ( offset ? "+" + offset : "" ) + ");\n";
offset += types[ i + 1 ][ "argPackAdvance" ]
}
functionBody += " var rv = handle[name](" + argsList + ");\n";
for ( var i = 0; i < argCount - 1; ++i ) {
if ( types[ i + 1 ][ "deleteObject" ] ) {
functionBody += " argType" + i + ".deleteObject(arg" + i + ");\n"
}
}
if ( !retType.isVoid ) {
functionBody += " return retType.toWireType(destructors, rv);\n"
}
functionBody += "};\n";
params.push( functionBody );
var invokerFunction = new_( Function, params ).apply( null, args );
return __emval_addMethodCaller( invokerFunction )
}
function __emval_get_module_property( name ) {
name = getStringOrSymbol( name );
return __emval_register( Module[ name ] )
}
function __emval_get_property( handle, key ) {
handle = requireHandle( handle );
key = requireHandle( key );
return __emval_register( handle[ key ] )
}
function __emval_incref( handle ) {
if ( handle > 4 ) {
emval_handle_array[ handle ].refcount += 1
}
}
function craftEmvalAllocator( argCount ) {
var argsList = "";
for ( var i = 0; i < argCount; ++i ) {
argsList += ( i !== 0 ? ", " : "" ) + "arg" + i
}
var functionBody = "return function emval_allocator_" + argCount + "(constructor, argTypes, args) {\n";
for ( var i = 0; i < argCount; ++i ) {
functionBody += "var argType" + i + " = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + " + i + '], "parameter ' + i + '");\n' + "var arg" + i + " = argType" + i + ".readValueFromPointer(args);\n" + "args += argType" + i + "['argPackAdvance'];\n"
}
functionBody += "var obj = new constructor(" + argsList + ");\n" + "return __emval_register(obj);\n" + "}\n";
return new Function( "requireRegisteredType", "Module", "__emval_register", functionBody )( requireRegisteredType, Module, __emval_register )
}
var emval_newers = {};
function __emval_new( handle, argCount, argTypes, args ) {
handle = requireHandle( handle );
var newer = emval_newers[ argCount ];
if ( !newer ) {
newer = craftEmvalAllocator( argCount );
emval_newers[ argCount ] = newer
}
return newer( handle, argTypes, args )
}
function __emval_new_cstring( v ) {
return __emval_register( getStringOrSymbol( v ) )
}
function __emval_run_destructors( handle ) {
var destructors = emval_handle_array[ handle ].value;
runDestructors( destructors );
__emval_decref( handle )
}
function _abort() {
abort()
}
function _emscripten_memcpy_big( dest, src, num ) {
HEAPU8.copyWithin( dest, src, src + num )
}
function _emscripten_get_heap_size() {
return HEAPU8.length
}
function emscripten_realloc_buffer( size ) {
try {
wasmMemory.grow( size - buffer.byteLength + 65535 >>> 16 );
updateGlobalBufferAndViews( wasmMemory.buffer );
return 1
} catch ( e ) {
}
}
function _emscripten_resize_heap( requestedSize ) {
requestedSize = requestedSize >>> 0;
var oldSize = _emscripten_get_heap_size();
var maxHeapSize = 2147483648;
if ( requestedSize > maxHeapSize ) {
return false
}
var minHeapSize = 16777216;
for ( var cutDown = 1; cutDown <= 4; cutDown *= 2 ) {
var overGrownHeapSize = oldSize * ( 1 + .2 / cutDown );
overGrownHeapSize = Math.min( overGrownHeapSize, requestedSize + 100663296 );
var newSize = Math.min( maxHeapSize, alignUp( Math.max( minHeapSize, requestedSize, overGrownHeapSize ), 65536 ) );
var replacement = emscripten_realloc_buffer( newSize );
if ( replacement ) {
return true
}
}
return false
}
InternalError = Module[ "InternalError" ] = extendError( Error, "InternalError" );
embind_init_charCodes();
BindingError = Module[ "BindingError" ] = extendError( Error, "BindingError" );
init_ClassHandle();
init_RegisteredPointer();
init_embind();
UnboundTypeError = Module[ "UnboundTypeError" ] = extendError( Error, "UnboundTypeError" );
init_emval();
__ATINIT__.push( {
func: function () {
___wasm_call_ctors()
}
} );
var asmLibraryArg = {
"G": ___cxa_allocate_exception,
"F": ___cxa_throw,
"s": __embind_finalize_value_object,
"D": __embind_register_bool,
"x": __embind_register_class,
"w": __embind_register_class_constructor,
"d": __embind_register_class_function,
"C": __embind_register_emval,
"o": __embind_register_enum,
"b": __embind_register_enum_value,
"u": __embind_register_float,
"j": __embind_register_function,
"h": __embind_register_integer,
"g": __embind_register_memory_view,
"v": __embind_register_std_string,
"r": __embind_register_std_wstring,
"t": __embind_register_value_object,
"c": __embind_register_value_object_field,
"E": __embind_register_void,
"l": __emval_as,
"p": __emval_call_void_method,
"a": __emval_decref,
"y": __emval_get_global,
"q": __emval_get_method_caller,
"n": __emval_get_module_property,
"e": __emval_get_property,
"i": __emval_incref,
"m": __emval_new,
"f": __emval_new_cstring,
"k": __emval_run_destructors,
"B": _abort,
"z": _emscripten_memcpy_big,
"A": _emscripten_resize_heap
};
var asm = createWasm();
var ___wasm_call_ctors = Module[ "___wasm_call_ctors" ] = function () {
return ( ___wasm_call_ctors = Module[ "___wasm_call_ctors" ] = Module[ "asm" ][ "J" ] ).apply( null, arguments )
};
var _malloc = Module[ "_malloc" ] = function () {
return ( _malloc = Module[ "_malloc" ] = Module[ "asm" ][ "K" ] ).apply( null, arguments )
};
var _free = Module[ "_free" ] = function () {
return ( _free = Module[ "_free" ] = Module[ "asm" ][ "L" ] ).apply( null, arguments )
};
var ___getTypeName = Module[ "___getTypeName" ] = function () {
return ( ___getTypeName = Module[ "___getTypeName" ] = Module[ "asm" ][ "M" ] ).apply( null, arguments )
};
var ___embind_register_native_and_builtin_types = Module[ "___embind_register_native_and_builtin_types" ] = function () {
return ( ___embind_register_native_and_builtin_types = Module[ "___embind_register_native_and_builtin_types" ] = Module[ "asm" ][ "N" ] ).apply( null, arguments )
};
var calledRun;
function ExitStatus( status ) {
this.name = "ExitStatus";
this.message = "Program terminated with exit(" + status + ")";
this.status = status
}
dependenciesFulfilled = function runCaller() {
if ( !calledRun ) run();
if ( !calledRun ) dependenciesFulfilled = runCaller
};
function run( args ) {
args = args || arguments_;
if ( runDependencies > 0 ) {
return
}
preRun();
if ( runDependencies > 0 ) return;
function doRun() {
if ( calledRun ) return;
calledRun = true;
Module[ "calledRun" ] = true;
if ( ABORT ) return;
initRuntime();
preMain();
readyPromiseResolve( Module );
if ( Module[ "onRuntimeInitialized" ] ) Module[ "onRuntimeInitialized" ]();
postRun()
}
if ( Module[ "setStatus" ] ) {
Module[ "setStatus" ]( "Running..." );
setTimeout( function () {
setTimeout( function () {
Module[ "setStatus" ]( "" )
}, 1 );
doRun()
}, 1 )
} else {
doRun()
}
}
Module[ "run" ] = run;
if ( Module[ "preInit" ] ) {
if ( typeof Module[ "preInit" ] == "function" ) Module[ "preInit" ] = [ Module[ "preInit" ] ];
while ( Module[ "preInit" ].length > 0 ) {
Module[ "preInit" ].pop()()
}
}
noExitRuntime = true;
run();
return BASIS.ready
}
);
} )();
if ( typeof exports === 'object' && typeof module === 'object' )
module.exports = BASIS;
else if ( typeof define === 'function' && define[ 'amd' ] )
define( [], function () {
return BASIS;
} );
else if ( typeof exports === 'object' )
exports[ "BASIS" ] = BASIS;