bullet.release.wasm-b7d95eee.js 87 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013
  1. System.register(['./_virtual_cc-6e4bb8ac.js', './_commonjsHelpers-ac46539f.js'], (function (exports) {
  2. 'use strict';
  3. var _createForOfIteratorHelperLoose, createCommonjsModule;
  4. return {
  5. setters: [function (module) {
  6. _createForOfIteratorHelperLoose = module._;
  7. }, function (module) {
  8. createCommonjsModule = module.c;
  9. }],
  10. execute: (function () {
  11. var bullet_release_wasm = createCommonjsModule(function (module, exports) {
  12. var Bullet = function () {
  13. var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
  14. return function (Bullet) {
  15. if (Bullet === void 0) {
  16. Bullet = {};
  17. }
  18. var Module = typeof Bullet != "undefined" ? Bullet : {};
  19. var readyPromiseResolve, readyPromiseReject;
  20. Module["ready"] = new Promise(function (resolve, reject) {
  21. readyPromiseResolve = resolve;
  22. readyPromiseReject = reject;
  23. });
  24. var moduleOverrides = Object.assign({}, Module);
  25. var ENVIRONMENT_IS_WEB = true;
  26. var scriptDirectory = "";
  27. function locateFile(path) {
  28. if (Module["locateFile"]) {
  29. return Module["locateFile"](path, scriptDirectory);
  30. }
  31. return scriptDirectory + path;
  32. }
  33. var readBinary;
  34. {
  35. if (typeof document != "undefined" && document.currentScript) {
  36. scriptDirectory = document.currentScript.src;
  37. }
  38. if (_scriptDir) {
  39. scriptDirectory = _scriptDir;
  40. }
  41. if (scriptDirectory.indexOf("blob:") !== 0) {
  42. scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1);
  43. } else {
  44. scriptDirectory = "";
  45. }
  46. }
  47. Module["print"] || console.log.bind(console);
  48. var err = Module["printErr"] || console.error.bind(console);
  49. Object.assign(Module, moduleOverrides);
  50. moduleOverrides = null;
  51. if (Module["arguments"]) Module["arguments"];
  52. if (Module["thisProgram"]) Module["thisProgram"];
  53. if (Module["quit"]) Module["quit"];
  54. var wasmBinary;
  55. if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
  56. Module["noExitRuntime"] || true;
  57. if (typeof WebAssembly != "object") {
  58. abort("no native wasm support detected");
  59. }
  60. var wasmMemory;
  61. var ABORT = false;
  62. var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
  63. function updateMemoryViews() {
  64. var b = wasmMemory.buffer;
  65. Module["HEAP8"] = HEAP8 = new Int8Array(b);
  66. Module["HEAP16"] = HEAP16 = new Int16Array(b);
  67. Module["HEAP32"] = HEAP32 = new Int32Array(b);
  68. Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
  69. Module["HEAPU16"] = HEAPU16 = new Uint16Array(b);
  70. Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
  71. Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
  72. Module["HEAPF64"] = HEAPF64 = new Float64Array(b);
  73. }
  74. var wasmTable;
  75. var __ATPRERUN__ = [];
  76. var __ATINIT__ = [];
  77. var __ATPOSTRUN__ = [];
  78. function preRun() {
  79. if (Module["preRun"]) {
  80. if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
  81. while (Module["preRun"].length) {
  82. addOnPreRun(Module["preRun"].shift());
  83. }
  84. }
  85. callRuntimeCallbacks(__ATPRERUN__);
  86. }
  87. function initRuntime() {
  88. callRuntimeCallbacks(__ATINIT__);
  89. }
  90. function postRun() {
  91. if (Module["postRun"]) {
  92. if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];
  93. while (Module["postRun"].length) {
  94. addOnPostRun(Module["postRun"].shift());
  95. }
  96. }
  97. callRuntimeCallbacks(__ATPOSTRUN__);
  98. }
  99. function addOnPreRun(cb) {
  100. __ATPRERUN__.unshift(cb);
  101. }
  102. function addOnInit(cb) {
  103. __ATINIT__.unshift(cb);
  104. }
  105. function addOnPostRun(cb) {
  106. __ATPOSTRUN__.unshift(cb);
  107. }
  108. var runDependencies = 0;
  109. var dependenciesFulfilled = null;
  110. function addRunDependency(id) {
  111. runDependencies++;
  112. if (Module["monitorRunDependencies"]) {
  113. Module["monitorRunDependencies"](runDependencies);
  114. }
  115. }
  116. function removeRunDependency(id) {
  117. runDependencies--;
  118. if (Module["monitorRunDependencies"]) {
  119. Module["monitorRunDependencies"](runDependencies);
  120. }
  121. if (runDependencies == 0) {
  122. if (dependenciesFulfilled) {
  123. var callback = dependenciesFulfilled;
  124. dependenciesFulfilled = null;
  125. callback();
  126. }
  127. }
  128. }
  129. function abort(what) {
  130. if (Module["onAbort"]) {
  131. Module["onAbort"](what);
  132. }
  133. what = "Aborted(" + what + ")";
  134. err(what);
  135. ABORT = true;
  136. what += ". Build with -sASSERTIONS for more info.";
  137. var e = new WebAssembly.RuntimeError(what);
  138. readyPromiseReject(e);
  139. throw e;
  140. }
  141. var dataURIPrefix = "data:application/octet-stream;base64,";
  142. function isDataURI(filename) {
  143. return filename.startsWith(dataURIPrefix);
  144. }
  145. var wasmBinaryFile;
  146. wasmBinaryFile = "bullet.release.wasm.wasm";
  147. if (!isDataURI(wasmBinaryFile)) {
  148. wasmBinaryFile = locateFile(wasmBinaryFile);
  149. }
  150. function getBinary(file) {
  151. try {
  152. if (file == wasmBinaryFile && wasmBinary) {
  153. return new Uint8Array(wasmBinary);
  154. }
  155. if (readBinary) ;
  156. throw "both async and sync fetching of the wasm failed";
  157. } catch (err) {
  158. abort(err);
  159. }
  160. }
  161. function getBinaryPromise(binaryFile) {
  162. if (!wasmBinary && (ENVIRONMENT_IS_WEB )) {
  163. if (typeof fetch == "function") {
  164. return fetch(binaryFile, {
  165. credentials: "same-origin"
  166. }).then(function (response) {
  167. if (!response["ok"]) {
  168. throw "failed to load wasm binary file at '" + binaryFile + "'";
  169. }
  170. return response["arrayBuffer"]();
  171. })["catch"](function () {
  172. return getBinary(binaryFile);
  173. });
  174. }
  175. }
  176. return Promise.resolve().then(function () {
  177. return getBinary(binaryFile);
  178. });
  179. }
  180. function instantiateArrayBuffer(binaryFile, imports, receiver) {
  181. return getBinaryPromise(binaryFile).then(function (binary) {
  182. return WebAssembly.instantiate(binary, imports);
  183. }).then(function (instance) {
  184. return instance;
  185. }).then(receiver, function (reason) {
  186. err("failed to asynchronously prepare wasm: " + reason);
  187. abort(reason);
  188. });
  189. }
  190. function instantiateAsync(binary, binaryFile, imports, callback) {
  191. if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && typeof fetch == "function") {
  192. return fetch(binaryFile, {
  193. credentials: "same-origin"
  194. }).then(function (response) {
  195. var result = WebAssembly.instantiateStreaming(response, imports);
  196. return result.then(callback, function (reason) {
  197. err("wasm streaming compile failed: " + reason);
  198. err("falling back to ArrayBuffer instantiation");
  199. return instantiateArrayBuffer(binaryFile, imports, callback);
  200. });
  201. });
  202. } else {
  203. return instantiateArrayBuffer(binaryFile, imports, callback);
  204. }
  205. }
  206. function createWasm() {
  207. var info = {
  208. "a": wasmImports
  209. };
  210. function receiveInstance(instance, module) {
  211. var exports = instance.exports;
  212. Module["asm"] = exports;
  213. wasmMemory = Module["asm"]["v"];
  214. updateMemoryViews();
  215. wasmTable = Module["asm"]["z"];
  216. addOnInit(Module["asm"]["w"]);
  217. removeRunDependency();
  218. return exports;
  219. }
  220. addRunDependency();
  221. function receiveInstantiationResult(result) {
  222. receiveInstance(result["instance"]);
  223. }
  224. if (Module["instantiateWasm"]) {
  225. try {
  226. return Module["instantiateWasm"](info, receiveInstance);
  227. } catch (e) {
  228. err("Module.instantiateWasm callback failed with error: " + e);
  229. readyPromiseReject(e);
  230. }
  231. }
  232. instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult)["catch"](readyPromiseReject);
  233. return {};
  234. }
  235. function callRuntimeCallbacks(callbacks) {
  236. while (callbacks.length > 0) {
  237. callbacks.shift()(Module);
  238. }
  239. }
  240. var char_0 = 48;
  241. var char_9 = 57;
  242. function makeLegalFunctionName(name) {
  243. if (undefined === name) {
  244. return "_unknown";
  245. }
  246. name = name.replace(/[^a-zA-Z0-9_]/g, "$");
  247. var f = name.charCodeAt(0);
  248. if (f >= char_0 && f <= char_9) {
  249. return "_" + name;
  250. }
  251. return name;
  252. }
  253. function createNamedFunction(name, body) {
  254. var _name$name;
  255. name = makeLegalFunctionName(name);
  256. return (_name$name = {}, _name$name[name] = function () {
  257. return body.apply(this, arguments);
  258. }, _name$name)[name];
  259. }
  260. function HandleAllocator() {
  261. this.allocated = [undefined];
  262. this.freelist = [];
  263. this.get = function (id) {
  264. return this.allocated[id];
  265. };
  266. this.has = function (id) {
  267. return this.allocated[id] !== undefined;
  268. };
  269. this.allocate = function (handle) {
  270. var id = this.freelist.pop() || this.allocated.length;
  271. this.allocated[id] = handle;
  272. return id;
  273. };
  274. this.free = function (id) {
  275. this.allocated[id] = undefined;
  276. this.freelist.push(id);
  277. };
  278. }
  279. var emval_handles = new HandleAllocator();
  280. function extendError(baseErrorType, errorName) {
  281. var errorClass = createNamedFunction(errorName, function (message) {
  282. this.name = errorName;
  283. this.message = message;
  284. var stack = new Error(message).stack;
  285. if (stack !== undefined) {
  286. this.stack = this.toString() + "\n" + stack.replace(/^Error(:[^\n]*)?\n/, "");
  287. }
  288. });
  289. errorClass.prototype = Object.create(baseErrorType.prototype);
  290. errorClass.prototype.constructor = errorClass;
  291. errorClass.prototype.toString = function () {
  292. if (this.message === undefined) {
  293. return this.name;
  294. } else {
  295. return this.name + ": " + this.message;
  296. }
  297. };
  298. return errorClass;
  299. }
  300. var BindingError = undefined;
  301. function throwBindingError(message) {
  302. throw new BindingError(message);
  303. }
  304. function count_emval_handles() {
  305. var count = 0;
  306. for (var i = emval_handles.reserved; i < emval_handles.allocated.length; ++i) {
  307. if (emval_handles.allocated[i] !== undefined) {
  308. ++count;
  309. }
  310. }
  311. return count;
  312. }
  313. function init_emval() {
  314. emval_handles.allocated.push({
  315. value: undefined
  316. }, {
  317. value: null
  318. }, {
  319. value: true
  320. }, {
  321. value: false
  322. });
  323. emval_handles.reserved = emval_handles.allocated.length;
  324. Module["count_emval_handles"] = count_emval_handles;
  325. }
  326. var Emval = {
  327. toValue: function toValue(handle) {
  328. if (!handle) {
  329. throwBindingError("Cannot use deleted val. handle = " + handle);
  330. }
  331. return emval_handles.get(handle).value;
  332. },
  333. toHandle: function toHandle(value) {
  334. switch (value) {
  335. case undefined:
  336. return 1;
  337. case null:
  338. return 2;
  339. case true:
  340. return 3;
  341. case false:
  342. return 4;
  343. default:
  344. {
  345. return emval_handles.allocate({
  346. refcount: 1,
  347. value: value
  348. });
  349. }
  350. }
  351. }
  352. };
  353. var PureVirtualError = undefined;
  354. function embind_init_charCodes() {
  355. var codes = new Array(256);
  356. for (var i = 0; i < 256; ++i) {
  357. codes[i] = String.fromCharCode(i);
  358. }
  359. embind_charCodes = codes;
  360. }
  361. var embind_charCodes = undefined;
  362. function readLatin1String(ptr) {
  363. var ret = "";
  364. var c = ptr;
  365. while (HEAPU8[c]) {
  366. ret += embind_charCodes[HEAPU8[c++]];
  367. }
  368. return ret;
  369. }
  370. function getInheritedInstanceCount() {
  371. return Object.keys(registeredInstances).length;
  372. }
  373. function getLiveInheritedInstances() {
  374. var rv = [];
  375. for (var k in registeredInstances) {
  376. if (registeredInstances.hasOwnProperty(k)) {
  377. rv.push(registeredInstances[k]);
  378. }
  379. }
  380. return rv;
  381. }
  382. var deletionQueue = [];
  383. function flushPendingDeletes() {
  384. while (deletionQueue.length) {
  385. var obj = deletionQueue.pop();
  386. obj.$$.deleteScheduled = false;
  387. obj["delete"]();
  388. }
  389. }
  390. var delayFunction = undefined;
  391. function setDelayFunction(fn) {
  392. delayFunction = fn;
  393. if (deletionQueue.length && delayFunction) {
  394. delayFunction(flushPendingDeletes);
  395. }
  396. }
  397. function init_embind() {
  398. Module["getInheritedInstanceCount"] = getInheritedInstanceCount;
  399. Module["getLiveInheritedInstances"] = getLiveInheritedInstances;
  400. Module["flushPendingDeletes"] = flushPendingDeletes;
  401. Module["setDelayFunction"] = setDelayFunction;
  402. }
  403. var registeredInstances = {};
  404. function getBasestPointer(class_, ptr) {
  405. if (ptr === undefined) {
  406. throwBindingError("ptr should not be undefined");
  407. }
  408. while (class_.baseClass) {
  409. ptr = class_.upcast(ptr);
  410. class_ = class_.baseClass;
  411. }
  412. return ptr;
  413. }
  414. function registerInheritedInstance(class_, ptr, instance) {
  415. ptr = getBasestPointer(class_, ptr);
  416. if (registeredInstances.hasOwnProperty(ptr)) {
  417. throwBindingError("Tried to register registered instance: " + ptr);
  418. } else {
  419. registeredInstances[ptr] = instance;
  420. }
  421. }
  422. var registeredTypes = {};
  423. function getTypeName(type) {
  424. var ptr = _getTypeName(type);
  425. var rv = readLatin1String(ptr);
  426. _free2(ptr);
  427. return rv;
  428. }
  429. function requireRegisteredType(rawType, humanName) {
  430. var impl = registeredTypes[rawType];
  431. if (undefined === impl) {
  432. throwBindingError(humanName + " has unknown type " + getTypeName(rawType));
  433. }
  434. return impl;
  435. }
  436. function unregisterInheritedInstance(class_, ptr) {
  437. ptr = getBasestPointer(class_, ptr);
  438. if (registeredInstances.hasOwnProperty(ptr)) {
  439. delete registeredInstances[ptr];
  440. } else {
  441. throwBindingError("Tried to unregister unregistered instance: " + ptr);
  442. }
  443. }
  444. function detachFinalizer(handle) {}
  445. var finalizationRegistry = false;
  446. function runDestructor($$) {
  447. if ($$.smartPtr) {
  448. $$.smartPtrType.rawDestructor($$.smartPtr);
  449. } else {
  450. $$.ptrType.registeredClass.rawDestructor($$.ptr);
  451. }
  452. }
  453. function releaseClassHandle($$) {
  454. $$.count.value -= 1;
  455. var toDelete = 0 === $$.count.value;
  456. if (toDelete) {
  457. runDestructor($$);
  458. }
  459. }
  460. function downcastPointer(ptr, ptrClass, desiredClass) {
  461. if (ptrClass === desiredClass) {
  462. return ptr;
  463. }
  464. if (undefined === desiredClass.baseClass) {
  465. return null;
  466. }
  467. var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass);
  468. if (rv === null) {
  469. return null;
  470. }
  471. return desiredClass.downcast(rv);
  472. }
  473. var registeredPointers = {};
  474. function getInheritedInstance(class_, ptr) {
  475. ptr = getBasestPointer(class_, ptr);
  476. return registeredInstances[ptr];
  477. }
  478. var InternalError = undefined;
  479. function throwInternalError(message) {
  480. throw new InternalError(message);
  481. }
  482. function makeClassHandle(prototype, record) {
  483. if (!record.ptrType || !record.ptr) {
  484. throwInternalError("makeClassHandle requires ptr and ptrType");
  485. }
  486. var hasSmartPtrType = !!record.smartPtrType;
  487. var hasSmartPtr = !!record.smartPtr;
  488. if (hasSmartPtrType !== hasSmartPtr) {
  489. throwInternalError("Both smartPtrType and smartPtr must be specified");
  490. }
  491. record.count = {
  492. value: 1
  493. };
  494. return attachFinalizer(Object.create(prototype, {
  495. $$: {
  496. value: record
  497. }
  498. }));
  499. }
  500. function RegisteredPointer_fromWireType(ptr) {
  501. var rawPointer = this.getPointee(ptr);
  502. if (!rawPointer) {
  503. this.destructor(ptr);
  504. return null;
  505. }
  506. var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer);
  507. if (undefined !== registeredInstance) {
  508. if (0 === registeredInstance.$$.count.value) {
  509. registeredInstance.$$.ptr = rawPointer;
  510. registeredInstance.$$.smartPtr = ptr;
  511. return registeredInstance["clone"]();
  512. } else {
  513. var rv = registeredInstance["clone"]();
  514. this.destructor(ptr);
  515. return rv;
  516. }
  517. }
  518. function makeDefaultHandle() {
  519. if (this.isSmartPointer) {
  520. return makeClassHandle(this.registeredClass.instancePrototype, {
  521. ptrType: this.pointeeType,
  522. ptr: rawPointer,
  523. smartPtrType: this,
  524. smartPtr: ptr
  525. });
  526. } else {
  527. return makeClassHandle(this.registeredClass.instancePrototype, {
  528. ptrType: this,
  529. ptr: ptr
  530. });
  531. }
  532. }
  533. var actualType = this.registeredClass.getActualType(rawPointer);
  534. var registeredPointerRecord = registeredPointers[actualType];
  535. if (!registeredPointerRecord) {
  536. return makeDefaultHandle.call(this);
  537. }
  538. var toType;
  539. if (this.isConst) {
  540. toType = registeredPointerRecord.constPointerType;
  541. } else {
  542. toType = registeredPointerRecord.pointerType;
  543. }
  544. var dp = downcastPointer(rawPointer, this.registeredClass, toType.registeredClass);
  545. if (dp === null) {
  546. return makeDefaultHandle.call(this);
  547. }
  548. if (this.isSmartPointer) {
  549. return makeClassHandle(toType.registeredClass.instancePrototype, {
  550. ptrType: toType,
  551. ptr: dp,
  552. smartPtrType: this,
  553. smartPtr: ptr
  554. });
  555. } else {
  556. return makeClassHandle(toType.registeredClass.instancePrototype, {
  557. ptrType: toType,
  558. ptr: dp
  559. });
  560. }
  561. }
  562. function attachFinalizer(handle) {
  563. if ("undefined" === typeof FinalizationRegistry) {
  564. attachFinalizer = function attachFinalizer(handle) {
  565. return handle;
  566. };
  567. return handle;
  568. }
  569. finalizationRegistry = new FinalizationRegistry(function (info) {
  570. releaseClassHandle(info.$$);
  571. });
  572. attachFinalizer = function attachFinalizer(handle) {
  573. var $$ = handle.$$;
  574. var hasSmartPtr = !!$$.smartPtr;
  575. if (hasSmartPtr) {
  576. var info = {
  577. $$: $$
  578. };
  579. finalizationRegistry.register(handle, info, handle);
  580. }
  581. return handle;
  582. };
  583. detachFinalizer = function detachFinalizer(handle) {
  584. return finalizationRegistry.unregister(handle);
  585. };
  586. return attachFinalizer(handle);
  587. }
  588. function __embind_create_inheriting_constructor(constructorName, wrapperType, properties) {
  589. constructorName = readLatin1String(constructorName);
  590. wrapperType = requireRegisteredType(wrapperType, "wrapper");
  591. properties = Emval.toValue(properties);
  592. var arraySlice = [].slice;
  593. var registeredClass = wrapperType.registeredClass;
  594. var wrapperPrototype = registeredClass.instancePrototype;
  595. var baseClass = registeredClass.baseClass;
  596. var baseClassPrototype = baseClass.instancePrototype;
  597. var baseConstructor = registeredClass.baseClass.constructor;
  598. var ctor = createNamedFunction(constructorName, function () {
  599. registeredClass.baseClass.pureVirtualFunctions.forEach(function (name) {
  600. if (this[name] === baseClassPrototype[name]) {
  601. throw new PureVirtualError("Pure virtual function " + name + " must be implemented in JavaScript");
  602. }
  603. }.bind(this));
  604. Object.defineProperty(this, "__parent", {
  605. value: wrapperPrototype
  606. });
  607. this["__construct"].apply(this, arraySlice.call(arguments));
  608. });
  609. wrapperPrototype["__construct"] = function __construct() {
  610. if (this === wrapperPrototype) {
  611. throwBindingError("Pass correct 'this' to __construct");
  612. }
  613. var inner = baseConstructor["implement"].apply(undefined, [this].concat(arraySlice.call(arguments)));
  614. detachFinalizer(inner);
  615. var $$ = inner.$$;
  616. inner["notifyOnDestruction"]();
  617. $$.preservePointerOnDelete = true;
  618. Object.defineProperties(this, {
  619. $$: {
  620. value: $$
  621. }
  622. });
  623. attachFinalizer(this);
  624. registerInheritedInstance(registeredClass, $$.ptr, this);
  625. };
  626. wrapperPrototype["__destruct"] = function __destruct() {
  627. if (this === wrapperPrototype) {
  628. throwBindingError("Pass correct 'this' to __destruct");
  629. }
  630. detachFinalizer(this);
  631. unregisterInheritedInstance(registeredClass, this.$$.ptr);
  632. };
  633. ctor.prototype = Object.create(wrapperPrototype);
  634. for (var p in properties) {
  635. ctor.prototype[p] = properties[p];
  636. }
  637. return Emval.toHandle(ctor);
  638. }
  639. function __embind_register_bigint(primitiveType, name, size, minRange, maxRange) {}
  640. function getShiftFromSize(size) {
  641. switch (size) {
  642. case 1:
  643. return 0;
  644. case 2:
  645. return 1;
  646. case 4:
  647. return 2;
  648. case 8:
  649. return 3;
  650. default:
  651. throw new TypeError("Unknown type size: " + size);
  652. }
  653. }
  654. var awaitingDependencies = {};
  655. var typeDependencies = {};
  656. function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) {
  657. myTypes.forEach(function (type) {
  658. typeDependencies[type] = dependentTypes;
  659. });
  660. function onComplete(typeConverters) {
  661. var myTypeConverters = getTypeConverters(typeConverters);
  662. if (myTypeConverters.length !== myTypes.length) {
  663. throwInternalError("Mismatched type converter count");
  664. }
  665. for (var i = 0; i < myTypes.length; ++i) {
  666. registerType(myTypes[i], myTypeConverters[i]);
  667. }
  668. }
  669. var typeConverters = new Array(dependentTypes.length);
  670. var unregisteredTypes = [];
  671. var registered = 0;
  672. dependentTypes.forEach(function (dt, i) {
  673. if (registeredTypes.hasOwnProperty(dt)) {
  674. typeConverters[i] = registeredTypes[dt];
  675. } else {
  676. unregisteredTypes.push(dt);
  677. if (!awaitingDependencies.hasOwnProperty(dt)) {
  678. awaitingDependencies[dt] = [];
  679. }
  680. awaitingDependencies[dt].push(function () {
  681. typeConverters[i] = registeredTypes[dt];
  682. ++registered;
  683. if (registered === unregisteredTypes.length) {
  684. onComplete(typeConverters);
  685. }
  686. });
  687. }
  688. });
  689. if (0 === unregisteredTypes.length) {
  690. onComplete(typeConverters);
  691. }
  692. }
  693. function registerType(rawType, registeredInstance, options) {
  694. if (options === void 0) {
  695. options = {};
  696. }
  697. if (!("argPackAdvance" in registeredInstance)) {
  698. throw new TypeError("registerType registeredInstance requires argPackAdvance");
  699. }
  700. var name = registeredInstance.name;
  701. if (!rawType) {
  702. throwBindingError("type \"" + name + "\" must have a positive integer typeid pointer");
  703. }
  704. if (registeredTypes.hasOwnProperty(rawType)) {
  705. if (options.ignoreDuplicateRegistrations) {
  706. return;
  707. } else {
  708. throwBindingError("Cannot register type '" + name + "' twice");
  709. }
  710. }
  711. registeredTypes[rawType] = registeredInstance;
  712. delete typeDependencies[rawType];
  713. if (awaitingDependencies.hasOwnProperty(rawType)) {
  714. var callbacks = awaitingDependencies[rawType];
  715. delete awaitingDependencies[rawType];
  716. callbacks.forEach(function (cb) {
  717. return cb();
  718. });
  719. }
  720. }
  721. function __embind_register_bool(rawType, name, size, trueValue, falseValue) {
  722. var shift = getShiftFromSize(size);
  723. name = readLatin1String(name);
  724. registerType(rawType, {
  725. name: name,
  726. "fromWireType": function fromWireType(wt) {
  727. return !!wt;
  728. },
  729. "toWireType": function toWireType(destructors, o) {
  730. return o ? trueValue : falseValue;
  731. },
  732. "argPackAdvance": 8,
  733. "readValueFromPointer": function readValueFromPointer(pointer) {
  734. var heap;
  735. if (size === 1) {
  736. heap = HEAP8;
  737. } else if (size === 2) {
  738. heap = HEAP16;
  739. } else if (size === 4) {
  740. heap = HEAP32;
  741. } else {
  742. throw new TypeError("Unknown boolean type size: " + name);
  743. }
  744. return this["fromWireType"](heap[pointer >> shift]);
  745. },
  746. destructorFunction: null
  747. });
  748. }
  749. function ClassHandle_isAliasOf(other) {
  750. if (!(this instanceof ClassHandle)) {
  751. return false;
  752. }
  753. if (!(other instanceof ClassHandle)) {
  754. return false;
  755. }
  756. var leftClass = this.$$.ptrType.registeredClass;
  757. var left = this.$$.ptr;
  758. var rightClass = other.$$.ptrType.registeredClass;
  759. var right = other.$$.ptr;
  760. while (leftClass.baseClass) {
  761. left = leftClass.upcast(left);
  762. leftClass = leftClass.baseClass;
  763. }
  764. while (rightClass.baseClass) {
  765. right = rightClass.upcast(right);
  766. rightClass = rightClass.baseClass;
  767. }
  768. return leftClass === rightClass && left === right;
  769. }
  770. function shallowCopyInternalPointer(o) {
  771. return {
  772. count: o.count,
  773. deleteScheduled: o.deleteScheduled,
  774. preservePointerOnDelete: o.preservePointerOnDelete,
  775. ptr: o.ptr,
  776. ptrType: o.ptrType,
  777. smartPtr: o.smartPtr,
  778. smartPtrType: o.smartPtrType
  779. };
  780. }
  781. function throwInstanceAlreadyDeleted(obj) {
  782. function getInstanceTypeName(handle) {
  783. return handle.$$.ptrType.registeredClass.name;
  784. }
  785. throwBindingError(getInstanceTypeName(obj) + " instance already deleted");
  786. }
  787. function ClassHandle_clone() {
  788. if (!this.$$.ptr) {
  789. throwInstanceAlreadyDeleted(this);
  790. }
  791. if (this.$$.preservePointerOnDelete) {
  792. this.$$.count.value += 1;
  793. return this;
  794. } else {
  795. var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), {
  796. $$: {
  797. value: shallowCopyInternalPointer(this.$$)
  798. }
  799. }));
  800. clone.$$.count.value += 1;
  801. clone.$$.deleteScheduled = false;
  802. return clone;
  803. }
  804. }
  805. function ClassHandle_delete() {
  806. if (!this.$$.ptr) {
  807. throwInstanceAlreadyDeleted(this);
  808. }
  809. if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {
  810. throwBindingError("Object already scheduled for deletion");
  811. }
  812. detachFinalizer(this);
  813. releaseClassHandle(this.$$);
  814. if (!this.$$.preservePointerOnDelete) {
  815. this.$$.smartPtr = undefined;
  816. this.$$.ptr = undefined;
  817. }
  818. }
  819. function ClassHandle_isDeleted() {
  820. return !this.$$.ptr;
  821. }
  822. function ClassHandle_deleteLater() {
  823. if (!this.$$.ptr) {
  824. throwInstanceAlreadyDeleted(this);
  825. }
  826. if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {
  827. throwBindingError("Object already scheduled for deletion");
  828. }
  829. deletionQueue.push(this);
  830. if (deletionQueue.length === 1 && delayFunction) {
  831. delayFunction(flushPendingDeletes);
  832. }
  833. this.$$.deleteScheduled = true;
  834. return this;
  835. }
  836. function init_ClassHandle() {
  837. ClassHandle.prototype["isAliasOf"] = ClassHandle_isAliasOf;
  838. ClassHandle.prototype["clone"] = ClassHandle_clone;
  839. ClassHandle.prototype["delete"] = ClassHandle_delete;
  840. ClassHandle.prototype["isDeleted"] = ClassHandle_isDeleted;
  841. ClassHandle.prototype["deleteLater"] = ClassHandle_deleteLater;
  842. }
  843. function ClassHandle() {}
  844. function ensureOverloadTable(proto, methodName, humanName) {
  845. if (undefined === proto[methodName].overloadTable) {
  846. var prevFunc = proto[methodName];
  847. proto[methodName] = function () {
  848. if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) {
  849. throwBindingError("Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[methodName].overloadTable + ")!");
  850. }
  851. return proto[methodName].overloadTable[arguments.length].apply(this, arguments);
  852. };
  853. proto[methodName].overloadTable = [];
  854. proto[methodName].overloadTable[prevFunc.argCount] = prevFunc;
  855. }
  856. }
  857. function exposePublicSymbol(name, value, numArguments) {
  858. if (Module.hasOwnProperty(name)) {
  859. if (undefined === numArguments || undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments]) {
  860. throwBindingError("Cannot register public name '" + name + "' twice");
  861. }
  862. ensureOverloadTable(Module, name, name);
  863. if (Module.hasOwnProperty(numArguments)) {
  864. throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!");
  865. }
  866. Module[name].overloadTable[numArguments] = value;
  867. } else {
  868. Module[name] = value;
  869. if (undefined !== numArguments) {
  870. Module[name].numArguments = numArguments;
  871. }
  872. }
  873. }
  874. function RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast) {
  875. this.name = name;
  876. this.constructor = constructor;
  877. this.instancePrototype = instancePrototype;
  878. this.rawDestructor = rawDestructor;
  879. this.baseClass = baseClass;
  880. this.getActualType = getActualType;
  881. this.upcast = upcast;
  882. this.downcast = downcast;
  883. this.pureVirtualFunctions = [];
  884. }
  885. function upcastPointer(ptr, ptrClass, desiredClass) {
  886. while (ptrClass !== desiredClass) {
  887. if (!ptrClass.upcast) {
  888. throwBindingError("Expected null or instance of " + desiredClass.name + ", got an instance of " + ptrClass.name);
  889. }
  890. ptr = ptrClass.upcast(ptr);
  891. ptrClass = ptrClass.baseClass;
  892. }
  893. return ptr;
  894. }
  895. function constNoSmartPtrRawPointerToWireType(destructors, handle) {
  896. if (handle === null) {
  897. if (this.isReference) {
  898. throwBindingError("null is not a valid " + this.name);
  899. }
  900. return 0;
  901. }
  902. if (!handle.$$) {
  903. throwBindingError("Cannot pass \"" + embindRepr(handle) + "\" as a " + this.name);
  904. }
  905. if (!handle.$$.ptr) {
  906. throwBindingError("Cannot pass deleted object as a pointer of type " + this.name);
  907. }
  908. var handleClass = handle.$$.ptrType.registeredClass;
  909. var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
  910. return ptr;
  911. }
  912. function genericPointerToWireType(destructors, handle) {
  913. var ptr;
  914. if (handle === null) {
  915. if (this.isReference) {
  916. throwBindingError("null is not a valid " + this.name);
  917. }
  918. if (this.isSmartPointer) {
  919. ptr = this.rawConstructor();
  920. if (destructors !== null) {
  921. destructors.push(this.rawDestructor, ptr);
  922. }
  923. return ptr;
  924. } else {
  925. return 0;
  926. }
  927. }
  928. if (!handle.$$) {
  929. throwBindingError("Cannot pass \"" + embindRepr(handle) + "\" as a " + this.name);
  930. }
  931. if (!handle.$$.ptr) {
  932. throwBindingError("Cannot pass deleted object as a pointer of type " + this.name);
  933. }
  934. if (!this.isConst && handle.$$.ptrType.isConst) {
  935. throwBindingError("Cannot convert argument of type " + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + " to parameter type " + this.name);
  936. }
  937. var handleClass = handle.$$.ptrType.registeredClass;
  938. ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
  939. if (this.isSmartPointer) {
  940. if (undefined === handle.$$.smartPtr) {
  941. throwBindingError("Passing raw pointer to smart pointer is illegal");
  942. }
  943. switch (this.sharingPolicy) {
  944. case 0:
  945. if (handle.$$.smartPtrType === this) {
  946. ptr = handle.$$.smartPtr;
  947. } else {
  948. throwBindingError("Cannot convert argument of type " + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + " to parameter type " + this.name);
  949. }
  950. break;
  951. case 1:
  952. ptr = handle.$$.smartPtr;
  953. break;
  954. case 2:
  955. if (handle.$$.smartPtrType === this) {
  956. ptr = handle.$$.smartPtr;
  957. } else {
  958. var clonedHandle = handle["clone"]();
  959. ptr = this.rawShare(ptr, Emval.toHandle(function () {
  960. clonedHandle["delete"]();
  961. }));
  962. if (destructors !== null) {
  963. destructors.push(this.rawDestructor, ptr);
  964. }
  965. }
  966. break;
  967. default:
  968. throwBindingError("Unsupporting sharing policy");
  969. }
  970. }
  971. return ptr;
  972. }
  973. function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) {
  974. if (handle === null) {
  975. if (this.isReference) {
  976. throwBindingError("null is not a valid " + this.name);
  977. }
  978. return 0;
  979. }
  980. if (!handle.$$) {
  981. throwBindingError("Cannot pass \"" + embindRepr(handle) + "\" as a " + this.name);
  982. }
  983. if (!handle.$$.ptr) {
  984. throwBindingError("Cannot pass deleted object as a pointer of type " + this.name);
  985. }
  986. if (handle.$$.ptrType.isConst) {
  987. throwBindingError("Cannot convert argument of type " + handle.$$.ptrType.name + " to parameter type " + this.name);
  988. }
  989. var handleClass = handle.$$.ptrType.registeredClass;
  990. var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
  991. return ptr;
  992. }
  993. function simpleReadValueFromPointer(pointer) {
  994. return this["fromWireType"](HEAP32[pointer >> 2]);
  995. }
  996. function RegisteredPointer_getPointee(ptr) {
  997. if (this.rawGetPointee) {
  998. ptr = this.rawGetPointee(ptr);
  999. }
  1000. return ptr;
  1001. }
  1002. function RegisteredPointer_destructor(ptr) {
  1003. if (this.rawDestructor) {
  1004. this.rawDestructor(ptr);
  1005. }
  1006. }
  1007. function RegisteredPointer_deleteObject(handle) {
  1008. if (handle !== null) {
  1009. handle["delete"]();
  1010. }
  1011. }
  1012. function init_RegisteredPointer() {
  1013. RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee;
  1014. RegisteredPointer.prototype.destructor = RegisteredPointer_destructor;
  1015. RegisteredPointer.prototype["argPackAdvance"] = 8;
  1016. RegisteredPointer.prototype["readValueFromPointer"] = simpleReadValueFromPointer;
  1017. RegisteredPointer.prototype["deleteObject"] = RegisteredPointer_deleteObject;
  1018. RegisteredPointer.prototype["fromWireType"] = RegisteredPointer_fromWireType;
  1019. }
  1020. function RegisteredPointer(name, registeredClass, isReference, isConst, isSmartPointer, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor) {
  1021. this.name = name;
  1022. this.registeredClass = registeredClass;
  1023. this.isReference = isReference;
  1024. this.isConst = isConst;
  1025. this.isSmartPointer = isSmartPointer;
  1026. this.pointeeType = pointeeType;
  1027. this.sharingPolicy = sharingPolicy;
  1028. this.rawGetPointee = rawGetPointee;
  1029. this.rawConstructor = rawConstructor;
  1030. this.rawShare = rawShare;
  1031. this.rawDestructor = rawDestructor;
  1032. if (!isSmartPointer && registeredClass.baseClass === undefined) {
  1033. if (isConst) {
  1034. this["toWireType"] = constNoSmartPtrRawPointerToWireType;
  1035. this.destructorFunction = null;
  1036. } else {
  1037. this["toWireType"] = nonConstNoSmartPtrRawPointerToWireType;
  1038. this.destructorFunction = null;
  1039. }
  1040. } else {
  1041. this["toWireType"] = genericPointerToWireType;
  1042. }
  1043. }
  1044. function replacePublicSymbol(name, value, numArguments) {
  1045. if (!Module.hasOwnProperty(name)) {
  1046. throwInternalError("Replacing nonexistant public symbol");
  1047. }
  1048. if (undefined !== Module[name].overloadTable && undefined !== numArguments) {
  1049. Module[name].overloadTable[numArguments] = value;
  1050. } else {
  1051. Module[name] = value;
  1052. Module[name].argCount = numArguments;
  1053. }
  1054. }
  1055. function dynCallLegacy(sig, ptr, args) {
  1056. var f = Module["dynCall_" + sig];
  1057. return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call(null, ptr);
  1058. }
  1059. var wasmTableMirror = [];
  1060. function getWasmTableEntry(funcPtr) {
  1061. var func = wasmTableMirror[funcPtr];
  1062. if (!func) {
  1063. if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1;
  1064. wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr);
  1065. }
  1066. return func;
  1067. }
  1068. function dynCall(sig, ptr, args) {
  1069. if (sig.includes("j")) {
  1070. return dynCallLegacy(sig, ptr, args);
  1071. }
  1072. var rtn = getWasmTableEntry(ptr).apply(null, args);
  1073. return rtn;
  1074. }
  1075. function getDynCaller(sig, ptr) {
  1076. var argCache = [];
  1077. return function () {
  1078. argCache.length = 0;
  1079. Object.assign(argCache, arguments);
  1080. return dynCall(sig, ptr, argCache);
  1081. };
  1082. }
  1083. function embind__requireFunction(signature, rawFunction) {
  1084. signature = readLatin1String(signature);
  1085. function makeDynCaller() {
  1086. if (signature.includes("j")) {
  1087. return getDynCaller(signature, rawFunction);
  1088. }
  1089. return getWasmTableEntry(rawFunction);
  1090. }
  1091. var fp = makeDynCaller();
  1092. if (typeof fp != "function") {
  1093. throwBindingError("unknown function pointer with signature " + signature + ": " + rawFunction);
  1094. }
  1095. return fp;
  1096. }
  1097. var UnboundTypeError = undefined;
  1098. function throwUnboundTypeError(message, types) {
  1099. var unboundTypes = [];
  1100. var seen = {};
  1101. function visit(type) {
  1102. if (seen[type]) {
  1103. return;
  1104. }
  1105. if (registeredTypes[type]) {
  1106. return;
  1107. }
  1108. if (typeDependencies[type]) {
  1109. typeDependencies[type].forEach(visit);
  1110. return;
  1111. }
  1112. unboundTypes.push(type);
  1113. seen[type] = true;
  1114. }
  1115. types.forEach(visit);
  1116. throw new UnboundTypeError(message + ": " + unboundTypes.map(getTypeName).join([", "]));
  1117. }
  1118. function __embind_register_class(rawType, rawPointerType, rawConstPointerType, baseClassRawType, getActualTypeSignature, getActualType, upcastSignature, upcast, downcastSignature, downcast, name, destructorSignature, rawDestructor) {
  1119. name = readLatin1String(name);
  1120. getActualType = embind__requireFunction(getActualTypeSignature, getActualType);
  1121. if (upcast) {
  1122. upcast = embind__requireFunction(upcastSignature, upcast);
  1123. }
  1124. if (downcast) {
  1125. downcast = embind__requireFunction(downcastSignature, downcast);
  1126. }
  1127. rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);
  1128. var legalFunctionName = makeLegalFunctionName(name);
  1129. exposePublicSymbol(legalFunctionName, function () {
  1130. throwUnboundTypeError("Cannot construct " + name + " due to unbound types", [baseClassRawType]);
  1131. });
  1132. whenDependentTypesAreResolved([rawType, rawPointerType, rawConstPointerType], baseClassRawType ? [baseClassRawType] : [], function (base) {
  1133. base = base[0];
  1134. var baseClass;
  1135. var basePrototype;
  1136. if (baseClassRawType) {
  1137. baseClass = base.registeredClass;
  1138. basePrototype = baseClass.instancePrototype;
  1139. } else {
  1140. basePrototype = ClassHandle.prototype;
  1141. }
  1142. var constructor = createNamedFunction(legalFunctionName, function () {
  1143. if (Object.getPrototypeOf(this) !== instancePrototype) {
  1144. throw new BindingError("Use 'new' to construct " + name);
  1145. }
  1146. if (undefined === registeredClass.constructor_body) {
  1147. throw new BindingError(name + " has no accessible constructor");
  1148. }
  1149. var body = registeredClass.constructor_body[arguments.length];
  1150. if (undefined === body) {
  1151. 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!");
  1152. }
  1153. return body.apply(this, arguments);
  1154. });
  1155. var instancePrototype = Object.create(basePrototype, {
  1156. constructor: {
  1157. value: constructor
  1158. }
  1159. });
  1160. constructor.prototype = instancePrototype;
  1161. var registeredClass = new RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast);
  1162. if (registeredClass.baseClass) {
  1163. if (registeredClass.baseClass.__derivedClasses === undefined) {
  1164. registeredClass.baseClass.__derivedClasses = [];
  1165. }
  1166. registeredClass.baseClass.__derivedClasses.push(registeredClass);
  1167. }
  1168. var referenceConverter = new RegisteredPointer(name, registeredClass, true, false, false);
  1169. var pointerConverter = new RegisteredPointer(name + "*", registeredClass, false, false, false);
  1170. var constPointerConverter = new RegisteredPointer(name + " const*", registeredClass, false, true, false);
  1171. registeredPointers[rawType] = {
  1172. pointerType: pointerConverter,
  1173. constPointerType: constPointerConverter
  1174. };
  1175. replacePublicSymbol(legalFunctionName, constructor);
  1176. return [referenceConverter, pointerConverter, constPointerConverter];
  1177. });
  1178. }
  1179. function runDestructors(destructors) {
  1180. while (destructors.length) {
  1181. var ptr = destructors.pop();
  1182. var del = destructors.pop();
  1183. del(ptr);
  1184. }
  1185. }
  1186. function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc, isAsync) {
  1187. var argCount = argTypes.length;
  1188. if (argCount < 2) {
  1189. throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!");
  1190. }
  1191. var isClassMethodFunc = argTypes[1] !== null && classType !== null;
  1192. var needsDestructorStack = false;
  1193. for (var i = 1; i < argTypes.length; ++i) {
  1194. if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) {
  1195. needsDestructorStack = true;
  1196. break;
  1197. }
  1198. }
  1199. var returns = argTypes[0].name !== "void";
  1200. var expectedArgCount = argCount - 2;
  1201. var argsWired = new Array(expectedArgCount);
  1202. var invokerFuncArgs = [];
  1203. var destructors = [];
  1204. return function () {
  1205. if (arguments.length !== expectedArgCount) {
  1206. throwBindingError("function " + humanName + " called with " + arguments.length + " arguments, expected " + expectedArgCount + " args!");
  1207. }
  1208. destructors.length = 0;
  1209. var thisWired;
  1210. invokerFuncArgs.length = isClassMethodFunc ? 2 : 1;
  1211. invokerFuncArgs[0] = cppTargetFunc;
  1212. if (isClassMethodFunc) {
  1213. thisWired = argTypes[1]["toWireType"](destructors, this);
  1214. invokerFuncArgs[1] = thisWired;
  1215. }
  1216. for (var i = 0; i < expectedArgCount; ++i) {
  1217. argsWired[i] = argTypes[i + 2]["toWireType"](destructors, arguments[i]);
  1218. invokerFuncArgs.push(argsWired[i]);
  1219. }
  1220. var rv = cppInvokerFunc.apply(null, invokerFuncArgs);
  1221. function onDone(rv) {
  1222. if (needsDestructorStack) {
  1223. runDestructors(destructors);
  1224. } else {
  1225. for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; i++) {
  1226. var param = i === 1 ? thisWired : argsWired[i - 2];
  1227. if (argTypes[i].destructorFunction !== null) {
  1228. argTypes[i].destructorFunction(param);
  1229. }
  1230. }
  1231. }
  1232. if (returns) {
  1233. return argTypes[0]["fromWireType"](rv);
  1234. }
  1235. }
  1236. return onDone(rv);
  1237. };
  1238. }
  1239. function heap32VectorToArray(count, firstElement) {
  1240. var array = [];
  1241. for (var i = 0; i < count; i++) {
  1242. array.push(HEAPU32[firstElement + i * 4 >> 2]);
  1243. }
  1244. return array;
  1245. }
  1246. function __embind_register_class_class_function(rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, fn, isAsync) {
  1247. var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
  1248. methodName = readLatin1String(methodName);
  1249. rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);
  1250. whenDependentTypesAreResolved([], [rawClassType], function (classType) {
  1251. classType = classType[0];
  1252. var humanName = classType.name + "." + methodName;
  1253. function unboundTypesHandler() {
  1254. throwUnboundTypeError("Cannot call " + humanName + " due to unbound types", rawArgTypes);
  1255. }
  1256. if (methodName.startsWith("@@")) {
  1257. methodName = Symbol[methodName.substring(2)];
  1258. }
  1259. var proto = classType.registeredClass.constructor;
  1260. if (undefined === proto[methodName]) {
  1261. unboundTypesHandler.argCount = argCount - 1;
  1262. proto[methodName] = unboundTypesHandler;
  1263. } else {
  1264. ensureOverloadTable(proto, methodName, humanName);
  1265. proto[methodName].overloadTable[argCount - 1] = unboundTypesHandler;
  1266. }
  1267. whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) {
  1268. var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1));
  1269. var func = craftInvokerFunction(humanName, invokerArgsArray, null, rawInvoker, fn);
  1270. if (undefined === proto[methodName].overloadTable) {
  1271. func.argCount = argCount - 1;
  1272. proto[methodName] = func;
  1273. } else {
  1274. proto[methodName].overloadTable[argCount - 1] = func;
  1275. }
  1276. if (classType.registeredClass.__derivedClasses) {
  1277. for (var _iterator = _createForOfIteratorHelperLoose(classType.registeredClass.__derivedClasses), _step; !(_step = _iterator()).done;) {
  1278. var derivedClass = _step.value;
  1279. if (!derivedClass.constructor.hasOwnProperty(methodName)) {
  1280. derivedClass.constructor[methodName] = func;
  1281. }
  1282. }
  1283. }
  1284. return [];
  1285. });
  1286. return [];
  1287. });
  1288. }
  1289. function __embind_register_class_function(rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, context, isPureVirtual, isAsync) {
  1290. var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
  1291. methodName = readLatin1String(methodName);
  1292. rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);
  1293. whenDependentTypesAreResolved([], [rawClassType], function (classType) {
  1294. classType = classType[0];
  1295. var humanName = classType.name + "." + methodName;
  1296. if (methodName.startsWith("@@")) {
  1297. methodName = Symbol[methodName.substring(2)];
  1298. }
  1299. if (isPureVirtual) {
  1300. classType.registeredClass.pureVirtualFunctions.push(methodName);
  1301. }
  1302. function unboundTypesHandler() {
  1303. throwUnboundTypeError("Cannot call " + humanName + " due to unbound types", rawArgTypes);
  1304. }
  1305. var proto = classType.registeredClass.instancePrototype;
  1306. var method = proto[methodName];
  1307. if (undefined === method || undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2) {
  1308. unboundTypesHandler.argCount = argCount - 2;
  1309. unboundTypesHandler.className = classType.name;
  1310. proto[methodName] = unboundTypesHandler;
  1311. } else {
  1312. ensureOverloadTable(proto, methodName, humanName);
  1313. proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler;
  1314. }
  1315. whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) {
  1316. var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context);
  1317. if (undefined === proto[methodName].overloadTable) {
  1318. memberFunction.argCount = argCount - 2;
  1319. proto[methodName] = memberFunction;
  1320. } else {
  1321. proto[methodName].overloadTable[argCount - 2] = memberFunction;
  1322. }
  1323. return [];
  1324. });
  1325. return [];
  1326. });
  1327. }
  1328. function __emval_decref(handle) {
  1329. if (handle >= emval_handles.reserved && 0 === --emval_handles.get(handle).refcount) {
  1330. emval_handles.free(handle);
  1331. }
  1332. }
  1333. function __embind_register_emval(rawType, name) {
  1334. name = readLatin1String(name);
  1335. registerType(rawType, {
  1336. name: name,
  1337. "fromWireType": function fromWireType(handle) {
  1338. var rv = Emval.toValue(handle);
  1339. __emval_decref(handle);
  1340. return rv;
  1341. },
  1342. "toWireType": function toWireType(destructors, value) {
  1343. return Emval.toHandle(value);
  1344. },
  1345. "argPackAdvance": 8,
  1346. "readValueFromPointer": simpleReadValueFromPointer,
  1347. destructorFunction: null
  1348. });
  1349. }
  1350. function embindRepr(v) {
  1351. if (v === null) {
  1352. return "null";
  1353. }
  1354. var t = typeof v;
  1355. if (t === "object" || t === "array" || t === "function") {
  1356. return v.toString();
  1357. } else {
  1358. return "" + v;
  1359. }
  1360. }
  1361. function floatReadValueFromPointer(name, shift) {
  1362. switch (shift) {
  1363. case 2:
  1364. return function (pointer) {
  1365. return this["fromWireType"](HEAPF32[pointer >> 2]);
  1366. };
  1367. case 3:
  1368. return function (pointer) {
  1369. return this["fromWireType"](HEAPF64[pointer >> 3]);
  1370. };
  1371. default:
  1372. throw new TypeError("Unknown float type: " + name);
  1373. }
  1374. }
  1375. function __embind_register_float(rawType, name, size) {
  1376. var shift = getShiftFromSize(size);
  1377. name = readLatin1String(name);
  1378. registerType(rawType, {
  1379. name: name,
  1380. "fromWireType": function fromWireType(value) {
  1381. return value;
  1382. },
  1383. "toWireType": function toWireType(destructors, value) {
  1384. return value;
  1385. },
  1386. "argPackAdvance": 8,
  1387. "readValueFromPointer": floatReadValueFromPointer(name, shift),
  1388. destructorFunction: null
  1389. });
  1390. }
  1391. function __embind_register_function(name, argCount, rawArgTypesAddr, signature, rawInvoker, fn, isAsync) {
  1392. var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
  1393. name = readLatin1String(name);
  1394. rawInvoker = embind__requireFunction(signature, rawInvoker);
  1395. exposePublicSymbol(name, function () {
  1396. throwUnboundTypeError("Cannot call " + name + " due to unbound types", argTypes);
  1397. }, argCount - 1);
  1398. whenDependentTypesAreResolved([], argTypes, function (argTypes) {
  1399. var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1));
  1400. replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null, rawInvoker, fn), argCount - 1);
  1401. return [];
  1402. });
  1403. }
  1404. function integerReadValueFromPointer(name, shift, signed) {
  1405. switch (shift) {
  1406. case 0:
  1407. return signed ? function readS8FromPointer(pointer) {
  1408. return HEAP8[pointer];
  1409. } : function readU8FromPointer(pointer) {
  1410. return HEAPU8[pointer];
  1411. };
  1412. case 1:
  1413. return signed ? function readS16FromPointer(pointer) {
  1414. return HEAP16[pointer >> 1];
  1415. } : function readU16FromPointer(pointer) {
  1416. return HEAPU16[pointer >> 1];
  1417. };
  1418. case 2:
  1419. return signed ? function readS32FromPointer(pointer) {
  1420. return HEAP32[pointer >> 2];
  1421. } : function readU32FromPointer(pointer) {
  1422. return HEAPU32[pointer >> 2];
  1423. };
  1424. default:
  1425. throw new TypeError("Unknown integer type: " + name);
  1426. }
  1427. }
  1428. function __embind_register_integer(primitiveType, name, size, minRange, maxRange) {
  1429. name = readLatin1String(name);
  1430. var shift = getShiftFromSize(size);
  1431. var fromWireType = function fromWireType(value) {
  1432. return value;
  1433. };
  1434. if (minRange === 0) {
  1435. var bitshift = 32 - 8 * size;
  1436. fromWireType = function fromWireType(value) {
  1437. return value << bitshift >>> bitshift;
  1438. };
  1439. }
  1440. var isUnsignedType = name.includes("unsigned");
  1441. var checkAssertions = function checkAssertions(value, toTypeName) {};
  1442. var toWireType;
  1443. if (isUnsignedType) {
  1444. toWireType = function toWireType(destructors, value) {
  1445. checkAssertions(value, this.name);
  1446. return value >>> 0;
  1447. };
  1448. } else {
  1449. toWireType = function toWireType(destructors, value) {
  1450. checkAssertions(value, this.name);
  1451. return value;
  1452. };
  1453. }
  1454. registerType(primitiveType, {
  1455. name: name,
  1456. "fromWireType": fromWireType,
  1457. "toWireType": toWireType,
  1458. "argPackAdvance": 8,
  1459. "readValueFromPointer": integerReadValueFromPointer(name, shift, minRange !== 0),
  1460. destructorFunction: null
  1461. });
  1462. }
  1463. function __embind_register_memory_view(rawType, dataTypeIndex, name) {
  1464. var typeMapping = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];
  1465. var TA = typeMapping[dataTypeIndex];
  1466. function decodeMemoryView(handle) {
  1467. handle = handle >> 2;
  1468. var heap = HEAPU32;
  1469. var size = heap[handle];
  1470. var data = heap[handle + 1];
  1471. return new TA(heap.buffer, data, size);
  1472. }
  1473. name = readLatin1String(name);
  1474. registerType(rawType, {
  1475. name: name,
  1476. "fromWireType": decodeMemoryView,
  1477. "argPackAdvance": 8,
  1478. "readValueFromPointer": decodeMemoryView
  1479. }, {
  1480. ignoreDuplicateRegistrations: true
  1481. });
  1482. }
  1483. function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
  1484. if (!(maxBytesToWrite > 0)) return 0;
  1485. var startIdx = outIdx;
  1486. var endIdx = outIdx + maxBytesToWrite - 1;
  1487. for (var i = 0; i < str.length; ++i) {
  1488. var u = str.charCodeAt(i);
  1489. if (u >= 55296 && u <= 57343) {
  1490. var u1 = str.charCodeAt(++i);
  1491. u = 65536 + ((u & 1023) << 10) | u1 & 1023;
  1492. }
  1493. if (u <= 127) {
  1494. if (outIdx >= endIdx) break;
  1495. heap[outIdx++] = u;
  1496. } else if (u <= 2047) {
  1497. if (outIdx + 1 >= endIdx) break;
  1498. heap[outIdx++] = 192 | u >> 6;
  1499. heap[outIdx++] = 128 | u & 63;
  1500. } else if (u <= 65535) {
  1501. if (outIdx + 2 >= endIdx) break;
  1502. heap[outIdx++] = 224 | u >> 12;
  1503. heap[outIdx++] = 128 | u >> 6 & 63;
  1504. heap[outIdx++] = 128 | u & 63;
  1505. } else {
  1506. if (outIdx + 3 >= endIdx) break;
  1507. heap[outIdx++] = 240 | u >> 18;
  1508. heap[outIdx++] = 128 | u >> 12 & 63;
  1509. heap[outIdx++] = 128 | u >> 6 & 63;
  1510. heap[outIdx++] = 128 | u & 63;
  1511. }
  1512. }
  1513. heap[outIdx] = 0;
  1514. return outIdx - startIdx;
  1515. }
  1516. function stringToUTF8(str, outPtr, maxBytesToWrite) {
  1517. return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
  1518. }
  1519. function lengthBytesUTF8(str) {
  1520. var len = 0;
  1521. for (var i = 0; i < str.length; ++i) {
  1522. var c = str.charCodeAt(i);
  1523. if (c <= 127) {
  1524. len++;
  1525. } else if (c <= 2047) {
  1526. len += 2;
  1527. } else if (c >= 55296 && c <= 57343) {
  1528. len += 4;
  1529. ++i;
  1530. } else {
  1531. len += 3;
  1532. }
  1533. }
  1534. return len;
  1535. }
  1536. var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined;
  1537. function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {
  1538. var endIdx = idx + maxBytesToRead;
  1539. var endPtr = idx;
  1540. while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
  1541. if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
  1542. return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
  1543. }
  1544. var str = "";
  1545. while (idx < endPtr) {
  1546. var u0 = heapOrArray[idx++];
  1547. if (!(u0 & 128)) {
  1548. str += String.fromCharCode(u0);
  1549. continue;
  1550. }
  1551. var u1 = heapOrArray[idx++] & 63;
  1552. if ((u0 & 224) == 192) {
  1553. str += String.fromCharCode((u0 & 31) << 6 | u1);
  1554. continue;
  1555. }
  1556. var u2 = heapOrArray[idx++] & 63;
  1557. if ((u0 & 240) == 224) {
  1558. u0 = (u0 & 15) << 12 | u1 << 6 | u2;
  1559. } else {
  1560. u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;
  1561. }
  1562. if (u0 < 65536) {
  1563. str += String.fromCharCode(u0);
  1564. } else {
  1565. var ch = u0 - 65536;
  1566. str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
  1567. }
  1568. }
  1569. return str;
  1570. }
  1571. function UTF8ToString(ptr, maxBytesToRead) {
  1572. return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
  1573. }
  1574. function __embind_register_std_string(rawType, name) {
  1575. name = readLatin1String(name);
  1576. var stdStringIsUTF8 = name === "std::string";
  1577. registerType(rawType, {
  1578. name: name,
  1579. "fromWireType": function fromWireType(value) {
  1580. var length = HEAPU32[value >> 2];
  1581. var payload = value + 4;
  1582. var str;
  1583. if (stdStringIsUTF8) {
  1584. var decodeStartPtr = payload;
  1585. for (var i = 0; i <= length; ++i) {
  1586. var currentBytePtr = payload + i;
  1587. if (i == length || HEAPU8[currentBytePtr] == 0) {
  1588. var maxRead = currentBytePtr - decodeStartPtr;
  1589. var stringSegment = UTF8ToString(decodeStartPtr, maxRead);
  1590. if (str === undefined) {
  1591. str = stringSegment;
  1592. } else {
  1593. str += String.fromCharCode(0);
  1594. str += stringSegment;
  1595. }
  1596. decodeStartPtr = currentBytePtr + 1;
  1597. }
  1598. }
  1599. } else {
  1600. var a = new Array(length);
  1601. for (var i = 0; i < length; ++i) {
  1602. a[i] = String.fromCharCode(HEAPU8[payload + i]);
  1603. }
  1604. str = a.join("");
  1605. }
  1606. _free2(value);
  1607. return str;
  1608. },
  1609. "toWireType": function toWireType(destructors, value) {
  1610. if (value instanceof ArrayBuffer) {
  1611. value = new Uint8Array(value);
  1612. }
  1613. var length;
  1614. var valueIsOfTypeString = typeof value == "string";
  1615. if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) {
  1616. throwBindingError("Cannot pass non-string to std::string");
  1617. }
  1618. if (stdStringIsUTF8 && valueIsOfTypeString) {
  1619. length = lengthBytesUTF8(value);
  1620. } else {
  1621. length = value.length;
  1622. }
  1623. var base = _malloc2(4 + length + 1);
  1624. var ptr = base + 4;
  1625. HEAPU32[base >> 2] = length;
  1626. if (stdStringIsUTF8 && valueIsOfTypeString) {
  1627. stringToUTF8(value, ptr, length + 1);
  1628. } else {
  1629. if (valueIsOfTypeString) {
  1630. for (var i = 0; i < length; ++i) {
  1631. var charCode = value.charCodeAt(i);
  1632. if (charCode > 255) {
  1633. _free2(ptr);
  1634. throwBindingError("String has UTF-16 code units that do not fit in 8 bits");
  1635. }
  1636. HEAPU8[ptr + i] = charCode;
  1637. }
  1638. } else {
  1639. for (var i = 0; i < length; ++i) {
  1640. HEAPU8[ptr + i] = value[i];
  1641. }
  1642. }
  1643. }
  1644. if (destructors !== null) {
  1645. destructors.push(_free2, base);
  1646. }
  1647. return base;
  1648. },
  1649. "argPackAdvance": 8,
  1650. "readValueFromPointer": simpleReadValueFromPointer,
  1651. destructorFunction: function destructorFunction(ptr) {
  1652. _free2(ptr);
  1653. }
  1654. });
  1655. }
  1656. var UTF16Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf-16le") : undefined;
  1657. function UTF16ToString(ptr, maxBytesToRead) {
  1658. var endPtr = ptr;
  1659. var idx = endPtr >> 1;
  1660. var maxIdx = idx + maxBytesToRead / 2;
  1661. while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx;
  1662. endPtr = idx << 1;
  1663. if (endPtr - ptr > 32 && UTF16Decoder) return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr));
  1664. var str = "";
  1665. for (var i = 0; !(i >= maxBytesToRead / 2); ++i) {
  1666. var codeUnit = HEAP16[ptr + i * 2 >> 1];
  1667. if (codeUnit == 0) break;
  1668. str += String.fromCharCode(codeUnit);
  1669. }
  1670. return str;
  1671. }
  1672. function stringToUTF16(str, outPtr, maxBytesToWrite) {
  1673. if (maxBytesToWrite === undefined) {
  1674. maxBytesToWrite = 2147483647;
  1675. }
  1676. if (maxBytesToWrite < 2) return 0;
  1677. maxBytesToWrite -= 2;
  1678. var startPtr = outPtr;
  1679. var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;
  1680. for (var i = 0; i < numCharsToWrite; ++i) {
  1681. var codeUnit = str.charCodeAt(i);
  1682. HEAP16[outPtr >> 1] = codeUnit;
  1683. outPtr += 2;
  1684. }
  1685. HEAP16[outPtr >> 1] = 0;
  1686. return outPtr - startPtr;
  1687. }
  1688. function lengthBytesUTF16(str) {
  1689. return str.length * 2;
  1690. }
  1691. function UTF32ToString(ptr, maxBytesToRead) {
  1692. var i = 0;
  1693. var str = "";
  1694. while (!(i >= maxBytesToRead / 4)) {
  1695. var utf32 = HEAP32[ptr + i * 4 >> 2];
  1696. if (utf32 == 0) break;
  1697. ++i;
  1698. if (utf32 >= 65536) {
  1699. var ch = utf32 - 65536;
  1700. str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
  1701. } else {
  1702. str += String.fromCharCode(utf32);
  1703. }
  1704. }
  1705. return str;
  1706. }
  1707. function stringToUTF32(str, outPtr, maxBytesToWrite) {
  1708. if (maxBytesToWrite === undefined) {
  1709. maxBytesToWrite = 2147483647;
  1710. }
  1711. if (maxBytesToWrite < 4) return 0;
  1712. var startPtr = outPtr;
  1713. var endPtr = startPtr + maxBytesToWrite - 4;
  1714. for (var i = 0; i < str.length; ++i) {
  1715. var codeUnit = str.charCodeAt(i);
  1716. if (codeUnit >= 55296 && codeUnit <= 57343) {
  1717. var trailSurrogate = str.charCodeAt(++i);
  1718. codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023;
  1719. }
  1720. HEAP32[outPtr >> 2] = codeUnit;
  1721. outPtr += 4;
  1722. if (outPtr + 4 > endPtr) break;
  1723. }
  1724. HEAP32[outPtr >> 2] = 0;
  1725. return outPtr - startPtr;
  1726. }
  1727. function lengthBytesUTF32(str) {
  1728. var len = 0;
  1729. for (var i = 0; i < str.length; ++i) {
  1730. var codeUnit = str.charCodeAt(i);
  1731. if (codeUnit >= 55296 && codeUnit <= 57343) ++i;
  1732. len += 4;
  1733. }
  1734. return len;
  1735. }
  1736. function __embind_register_std_wstring(rawType, charSize, name) {
  1737. name = readLatin1String(name);
  1738. var decodeString, encodeString, getHeap, lengthBytesUTF, shift;
  1739. if (charSize === 2) {
  1740. decodeString = UTF16ToString;
  1741. encodeString = stringToUTF16;
  1742. lengthBytesUTF = lengthBytesUTF16;
  1743. getHeap = function getHeap() {
  1744. return HEAPU16;
  1745. };
  1746. shift = 1;
  1747. } else if (charSize === 4) {
  1748. decodeString = UTF32ToString;
  1749. encodeString = stringToUTF32;
  1750. lengthBytesUTF = lengthBytesUTF32;
  1751. getHeap = function getHeap() {
  1752. return HEAPU32;
  1753. };
  1754. shift = 2;
  1755. }
  1756. registerType(rawType, {
  1757. name: name,
  1758. "fromWireType": function fromWireType(value) {
  1759. var length = HEAPU32[value >> 2];
  1760. var HEAP = getHeap();
  1761. var str;
  1762. var decodeStartPtr = value + 4;
  1763. for (var i = 0; i <= length; ++i) {
  1764. var currentBytePtr = value + 4 + i * charSize;
  1765. if (i == length || HEAP[currentBytePtr >> shift] == 0) {
  1766. var maxReadBytes = currentBytePtr - decodeStartPtr;
  1767. var stringSegment = decodeString(decodeStartPtr, maxReadBytes);
  1768. if (str === undefined) {
  1769. str = stringSegment;
  1770. } else {
  1771. str += String.fromCharCode(0);
  1772. str += stringSegment;
  1773. }
  1774. decodeStartPtr = currentBytePtr + charSize;
  1775. }
  1776. }
  1777. _free2(value);
  1778. return str;
  1779. },
  1780. "toWireType": function toWireType(destructors, value) {
  1781. if (!(typeof value == "string")) {
  1782. throwBindingError("Cannot pass non-string to C++ string type " + name);
  1783. }
  1784. var length = lengthBytesUTF(value);
  1785. var ptr = _malloc2(4 + length + charSize);
  1786. HEAPU32[ptr >> 2] = length >> shift;
  1787. encodeString(value, ptr + 4, length + charSize);
  1788. if (destructors !== null) {
  1789. destructors.push(_free2, ptr);
  1790. }
  1791. return ptr;
  1792. },
  1793. "argPackAdvance": 8,
  1794. "readValueFromPointer": simpleReadValueFromPointer,
  1795. destructorFunction: function destructorFunction(ptr) {
  1796. _free2(ptr);
  1797. }
  1798. });
  1799. }
  1800. function __embind_register_void(rawType, name) {
  1801. name = readLatin1String(name);
  1802. registerType(rawType, {
  1803. isVoid: true,
  1804. name: name,
  1805. "argPackAdvance": 0,
  1806. "fromWireType": function fromWireType() {
  1807. return undefined;
  1808. },
  1809. "toWireType": function toWireType(destructors, o) {
  1810. return undefined;
  1811. }
  1812. });
  1813. }
  1814. var emval_symbols = {};
  1815. function getStringOrSymbol(address) {
  1816. var symbol = emval_symbols[address];
  1817. if (symbol === undefined) {
  1818. return readLatin1String(address);
  1819. }
  1820. return symbol;
  1821. }
  1822. var emval_methodCallers = [];
  1823. function __emval_call_void_method(caller, handle, methodName, args) {
  1824. caller = emval_methodCallers[caller];
  1825. handle = Emval.toValue(handle);
  1826. methodName = getStringOrSymbol(methodName);
  1827. caller(handle, methodName, null, args);
  1828. }
  1829. function emval_addMethodCaller(caller) {
  1830. var id = emval_methodCallers.length;
  1831. emval_methodCallers.push(caller);
  1832. return id;
  1833. }
  1834. function emval_lookupTypes(argCount, argTypes) {
  1835. var a = new Array(argCount);
  1836. for (var i = 0; i < argCount; ++i) {
  1837. a[i] = requireRegisteredType(HEAPU32[argTypes + i * 4 >> 2], "parameter " + i);
  1838. }
  1839. return a;
  1840. }
  1841. var emval_registeredMethods = [];
  1842. function __emval_get_method_caller(argCount, argTypes) {
  1843. var types = emval_lookupTypes(argCount, argTypes);
  1844. var retType = types[0];
  1845. var signatureName = retType.name + "_$" + types.slice(1).map(function (t) {
  1846. return t.name;
  1847. }).join("_") + "$";
  1848. var returnId = emval_registeredMethods[signatureName];
  1849. if (returnId !== undefined) {
  1850. return returnId;
  1851. }
  1852. var argN = new Array(argCount - 1);
  1853. var invokerFunction = function invokerFunction(handle, name, destructors, args) {
  1854. var offset = 0;
  1855. for (var i = 0; i < argCount - 1; ++i) {
  1856. argN[i] = types[i + 1]["readValueFromPointer"](args + offset);
  1857. offset += types[i + 1]["argPackAdvance"];
  1858. }
  1859. var rv = handle[name].apply(handle, argN);
  1860. for (var i = 0; i < argCount - 1; ++i) {
  1861. if (types[i + 1].deleteObject) {
  1862. types[i + 1].deleteObject(argN[i]);
  1863. }
  1864. }
  1865. if (!retType.isVoid) {
  1866. return retType["toWireType"](destructors, rv);
  1867. }
  1868. };
  1869. returnId = emval_addMethodCaller(invokerFunction);
  1870. emval_registeredMethods[signatureName] = returnId;
  1871. return returnId;
  1872. }
  1873. function __emval_incref(handle) {
  1874. if (handle > 4) {
  1875. emval_handles.get(handle).refcount += 1;
  1876. }
  1877. }
  1878. function _abort() {
  1879. abort("");
  1880. }
  1881. function _emscripten_memcpy_big(dest, src, num) {
  1882. HEAPU8.copyWithin(dest, src, src + num);
  1883. }
  1884. function getHeapMax() {
  1885. return 2147483648;
  1886. }
  1887. function emscripten_realloc_buffer(size) {
  1888. var b = wasmMemory.buffer;
  1889. var pages = size - b.byteLength + 65535 >>> 16;
  1890. try {
  1891. wasmMemory.grow(pages);
  1892. updateMemoryViews();
  1893. return 1;
  1894. } catch (e) {}
  1895. }
  1896. function _emscripten_resize_heap(requestedSize) {
  1897. var oldSize = HEAPU8.length;
  1898. requestedSize = requestedSize >>> 0;
  1899. var maxHeapSize = getHeapMax();
  1900. if (requestedSize > maxHeapSize) {
  1901. return false;
  1902. }
  1903. var alignUp = function alignUp(x, multiple) {
  1904. return x + (multiple - x % multiple) % multiple;
  1905. };
  1906. for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
  1907. var overGrownHeapSize = oldSize * (1 + .2 / cutDown);
  1908. overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
  1909. var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));
  1910. var replacement = emscripten_realloc_buffer(newSize);
  1911. if (replacement) {
  1912. return true;
  1913. }
  1914. }
  1915. return false;
  1916. }
  1917. BindingError = Module["BindingError"] = extendError(Error, "BindingError");
  1918. init_emval();
  1919. PureVirtualError = Module["PureVirtualError"] = extendError(Error, "PureVirtualError");
  1920. embind_init_charCodes();
  1921. init_embind();
  1922. InternalError = Module["InternalError"] = extendError(Error, "InternalError");
  1923. init_ClassHandle();
  1924. init_RegisteredPointer();
  1925. UnboundTypeError = Module["UnboundTypeError"] = extendError(Error, "UnboundTypeError");
  1926. var wasmImports = {
  1927. "k": __embind_create_inheriting_constructor,
  1928. "p": __embind_register_bigint,
  1929. "t": __embind_register_bool,
  1930. "i": __embind_register_class,
  1931. "h": __embind_register_class_class_function,
  1932. "g": __embind_register_class_function,
  1933. "s": __embind_register_emval,
  1934. "n": __embind_register_float,
  1935. "a": __embind_register_function,
  1936. "f": __embind_register_integer,
  1937. "b": __embind_register_memory_view,
  1938. "m": __embind_register_std_string,
  1939. "l": __embind_register_std_wstring,
  1940. "u": __embind_register_void,
  1941. "c": __emval_call_void_method,
  1942. "e": __emval_decref,
  1943. "d": __emval_get_method_caller,
  1944. "o": __emval_incref,
  1945. "j": _abort,
  1946. "r": _emscripten_memcpy_big,
  1947. "q": _emscripten_resize_heap
  1948. };
  1949. createWasm();
  1950. var _malloc2 = function _malloc() {
  1951. return (_malloc2 = Module["asm"]["x"]).apply(null, arguments);
  1952. };
  1953. var _free2 = function _free() {
  1954. return (_free2 = Module["asm"]["y"]).apply(null, arguments);
  1955. };
  1956. var _getTypeName = function ___getTypeName() {
  1957. return (_getTypeName = Module["asm"]["A"]).apply(null, arguments);
  1958. };
  1959. Module["__embind_initialize_bindings"] = function () {
  1960. return (Module["__embind_initialize_bindings"] = Module["asm"]["B"]).apply(null, arguments);
  1961. };
  1962. var calledRun;
  1963. dependenciesFulfilled = function runCaller() {
  1964. if (!calledRun) run();
  1965. if (!calledRun) dependenciesFulfilled = runCaller;
  1966. };
  1967. function run() {
  1968. if (runDependencies > 0) {
  1969. return;
  1970. }
  1971. preRun();
  1972. if (runDependencies > 0) {
  1973. return;
  1974. }
  1975. function doRun() {
  1976. if (calledRun) return;
  1977. calledRun = true;
  1978. Module["calledRun"] = true;
  1979. if (ABORT) return;
  1980. initRuntime();
  1981. readyPromiseResolve(Module);
  1982. if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
  1983. postRun();
  1984. }
  1985. if (Module["setStatus"]) {
  1986. Module["setStatus"]("Running...");
  1987. setTimeout(function () {
  1988. setTimeout(function () {
  1989. Module["setStatus"]("");
  1990. }, 1);
  1991. doRun();
  1992. }, 1);
  1993. } else {
  1994. doRun();
  1995. }
  1996. }
  1997. if (Module["preInit"]) {
  1998. if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
  1999. while (Module["preInit"].length > 0) {
  2000. Module["preInit"].pop()();
  2001. }
  2002. }
  2003. run();
  2004. return Bullet.ready;
  2005. };
  2006. }();
  2007. module.exports = Bullet;
  2008. }); exports({ 'default': bullet_release_wasm, __moduleExports: bullet_release_wasm });
  2009. })
  2010. };
  2011. }));