|
18 | 18 | /*global simpleReadValueFromPointer, floatReadValueFromPointer, integerReadValueFromPointer, enumReadValueFromPointer, replacePublicSymbol, craftInvokerFunction, tupleRegistrations*/
|
19 | 19 | /*global finalizationRegistry, attachFinalizer, detachFinalizer, releaseClassHandle, runDestructor*/
|
20 | 20 | /*global ClassHandle, makeClassHandle, structRegistrations, whenDependentTypesAreResolved, BindingError, deletionQueue, delayFunction:true, upcastPointer*/
|
21 |
| -/*global exposePublicSymbol, heap32VectorToArray, newFunc, RegisteredPointer_getPointee, RegisteredPointer_destructor, RegisteredPointer_deleteObject, char_0, char_9*/ |
| 21 | +/*global exposePublicSymbol, heap32VectorToArray, newFunc, char_0, char_9*/ |
22 | 22 | /*global getInheritedInstanceCount, getLiveInheritedInstances, setDelayFunction, InternalError, runDestructors*/
|
23 | 23 | /*global requireRegisteredType, unregisterInheritedInstance, registerInheritedInstance, PureVirtualError, throwUnboundTypeError*/
|
24 |
| -/*global assert, validateThis, downcastPointer, registeredPointers, RegisteredClass, getInheritedInstance, ClassHandle_isAliasOf, ClassHandle_clone, ClassHandle_isDeleted, ClassHandle_deleteLater*/ |
| 24 | +/*global assert, validateThis, downcastPointer, registeredPointers, RegisteredClass, getInheritedInstance */ |
25 | 25 | /*global throwInstanceAlreadyDeleted, shallowCopyInternalPointer*/
|
26 | 26 | /*global RegisteredPointer_fromWireType, constNoSmartPtrRawPointerToWireType, nonConstNoSmartPtrRawPointerToWireType, genericPointerToWireType*/
|
27 | 27 |
|
@@ -494,7 +494,9 @@ var LibraryEmbind = {
|
494 | 494 |
|
495 | 495 | registerType(rawType, {
|
496 | 496 | name,
|
497 |
| - 'fromWireType': (value) => { |
| 497 | + // For some method names we use string keys here since they are part of |
| 498 | + // the public/external API and/or used by the runtime-generated code. |
| 499 | + 'fromWireType'(value) { |
498 | 500 | var length = {{{ makeGetValue('value', '0', SIZE_TYPE) }}};
|
499 | 501 | var payload = value + {{{ POINTER_SIZE }}};
|
500 | 502 |
|
@@ -528,7 +530,7 @@ var LibraryEmbind = {
|
528 | 530 |
|
529 | 531 | return str;
|
530 | 532 | },
|
531 |
| - 'toWireType': (destructors, value) => { |
| 533 | + 'toWireType'(destructors, value) { |
532 | 534 | if (value instanceof ArrayBuffer) {
|
533 | 535 | value = new Uint8Array(value);
|
534 | 536 | }
|
@@ -575,7 +577,9 @@ var LibraryEmbind = {
|
575 | 577 | },
|
576 | 578 | 'argPackAdvance': GenericWireTypeSize,
|
577 | 579 | 'readValueFromPointer': readPointer,
|
578 |
| - destructorFunction: (ptr) => _free(ptr), |
| 580 | + destructorFunction(ptr) { |
| 581 | + _free(ptr); |
| 582 | + }, |
579 | 583 | });
|
580 | 584 | },
|
581 | 585 |
|
@@ -648,7 +652,9 @@ var LibraryEmbind = {
|
648 | 652 | },
|
649 | 653 | 'argPackAdvance': GenericWireTypeSize,
|
650 | 654 | 'readValueFromPointer': simpleReadValueFromPointer,
|
651 |
| - destructorFunction: (ptr) => _free(ptr), |
| 655 | + destructorFunction(ptr) { |
| 656 | + _free(ptr); |
| 657 | + } |
652 | 658 | });
|
653 | 659 | },
|
654 | 660 |
|
@@ -1348,16 +1354,33 @@ var LibraryEmbind = {
|
1348 | 1354 | },
|
1349 | 1355 |
|
1350 | 1356 | $init_RegisteredPointer__deps: [
|
| 1357 | + '$RegisteredPointer', |
1351 | 1358 | '$readPointer',
|
1352 |
| - '$RegisteredPointer_getPointee', '$RegisteredPointer_destructor', |
1353 |
| - '$RegisteredPointer_deleteObject', '$RegisteredPointer_fromWireType'], |
| 1359 | + '$RegisteredPointer_fromWireType', |
| 1360 | + '$GenericWireTypeSize', |
| 1361 | + ], |
1354 | 1362 | $init_RegisteredPointer: () => {
|
1355 |
| - RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee; |
1356 |
| - RegisteredPointer.prototype.destructor = RegisteredPointer_destructor; |
1357 |
| - RegisteredPointer.prototype['argPackAdvance'] = GenericWireTypeSize; |
1358 |
| - RegisteredPointer.prototype['readValueFromPointer'] = readPointer; |
1359 |
| - RegisteredPointer.prototype['deleteObject'] = RegisteredPointer_deleteObject; |
1360 |
| - RegisteredPointer.prototype['fromWireType'] = RegisteredPointer_fromWireType; |
| 1363 | + Object.assign(RegisteredPointer.prototype, { |
| 1364 | + getPointee(ptr) { |
| 1365 | + if (this.rawGetPointee) { |
| 1366 | + ptr = this.rawGetPointee(ptr); |
| 1367 | + } |
| 1368 | + return ptr; |
| 1369 | + }, |
| 1370 | + destructor(ptr) { |
| 1371 | + if (this.rawDestructor) { |
| 1372 | + this.rawDestructor(ptr); |
| 1373 | + } |
| 1374 | + }, |
| 1375 | + 'argPackAdvance': GenericWireTypeSize, |
| 1376 | + 'readValueFromPointer': readPointer, |
| 1377 | + 'deleteObject'(handle) { |
| 1378 | + if (handle !== null) { |
| 1379 | + handle['delete'](); |
| 1380 | + } |
| 1381 | + }, |
| 1382 | + 'fromWireType': RegisteredPointer_fromWireType, |
| 1383 | + }); |
1361 | 1384 | },
|
1362 | 1385 |
|
1363 | 1386 | $RegisteredPointer__docs: `/** @constructor
|
@@ -1418,27 +1441,6 @@ var LibraryEmbind = {
|
1418 | 1441 | }
|
1419 | 1442 | },
|
1420 | 1443 |
|
1421 |
| - $RegisteredPointer_getPointee__docs: '/** @suppress {globalThis} */', |
1422 |
| - $RegisteredPointer_getPointee: function(ptr) { |
1423 |
| - if (this.rawGetPointee) { |
1424 |
| - ptr = this.rawGetPointee(ptr); |
1425 |
| - } |
1426 |
| - return ptr; |
1427 |
| - }, |
1428 |
| - |
1429 |
| - $RegisteredPointer_destructor__docs: '/** @suppress {globalThis} */', |
1430 |
| - $RegisteredPointer_destructor: function(ptr) { |
1431 |
| - if (this.rawDestructor) { |
1432 |
| - this.rawDestructor(ptr); |
1433 |
| - } |
1434 |
| - }, |
1435 |
| - |
1436 |
| - $RegisteredPointer_deleteObject: (handle) => { |
1437 |
| - if (handle !== null) { |
1438 |
| - handle['delete'](); |
1439 |
| - } |
1440 |
| - }, |
1441 |
| - |
1442 | 1444 | $RegisteredPointer_fromWireType__docs: '/** @suppress {globalThis} */',
|
1443 | 1445 | $RegisteredPointer_fromWireType__deps: [
|
1444 | 1446 | '$downcastPointer', '$registeredPointers',
|
@@ -1615,128 +1617,120 @@ var LibraryEmbind = {
|
1615 | 1617 | },
|
1616 | 1618 |
|
1617 | 1619 | $init_ClassHandle__deps: [
|
1618 |
| - '$ClassHandle_isAliasOf', '$ClassHandle_clone', '$ClassHandle_delete', |
1619 |
| - '$ClassHandle_isDeleted', '$ClassHandle_deleteLater'], |
| 1620 | + '$ClassHandle', |
| 1621 | + '$shallowCopyInternalPointer', |
| 1622 | + '$throwInstanceAlreadyDeleted', |
| 1623 | + '$attachFinalizer', |
| 1624 | + '$releaseClassHandle', |
| 1625 | + '$throwBindingError', |
| 1626 | + '$detachFinalizer', |
| 1627 | + ], |
1620 | 1628 | $init_ClassHandle: () => {
|
1621 |
| - ClassHandle.prototype['isAliasOf'] = ClassHandle_isAliasOf; |
1622 |
| - ClassHandle.prototype['clone'] = ClassHandle_clone; |
1623 |
| - ClassHandle.prototype['delete'] = ClassHandle_delete; |
1624 |
| - ClassHandle.prototype['isDeleted'] = ClassHandle_isDeleted; |
1625 |
| - ClassHandle.prototype['deleteLater'] = ClassHandle_deleteLater; |
1626 |
| - }, |
1627 |
| - |
1628 |
| - $ClassHandle__docs: '/** @constructor */', |
1629 |
| - $ClassHandle__deps: ['$init_ClassHandle'], |
1630 |
| - $ClassHandle__postset: 'init_ClassHandle()', |
1631 |
| - // root of all pointer and smart pointer handles in embind |
1632 |
| - $ClassHandle: function() { |
1633 |
| - }, |
| 1629 | + Object.assign(ClassHandle.prototype, { |
| 1630 | + "isAliasOf"(other) { |
| 1631 | + if (!(this instanceof ClassHandle)) { |
| 1632 | + return false; |
| 1633 | + } |
| 1634 | + if (!(other instanceof ClassHandle)) { |
| 1635 | + return false; |
| 1636 | + } |
1634 | 1637 |
|
1635 |
| - $ClassHandle_isAliasOf__docs: '/** @suppress {globalThis,checkTypes} */', |
1636 |
| - $ClassHandle_isAliasOf: function(other) { |
1637 |
| - if (!(this instanceof ClassHandle)) { |
1638 |
| - return false; |
1639 |
| - } |
1640 |
| - if (!(other instanceof ClassHandle)) { |
1641 |
| - return false; |
1642 |
| - } |
| 1638 | + var leftClass = this.$$.ptrType.registeredClass; |
| 1639 | + var left = this.$$.ptr; |
| 1640 | + other.$$ = /** @type {Object} */ (other.$$); |
| 1641 | + var rightClass = other.$$.ptrType.registeredClass; |
| 1642 | + var right = other.$$.ptr; |
1643 | 1643 |
|
1644 |
| - var leftClass = this.$$.ptrType.registeredClass; |
1645 |
| - var left = this.$$.ptr; |
1646 |
| - other.$$ = /** @type {Object} */ (other.$$); |
1647 |
| - var rightClass = other.$$.ptrType.registeredClass; |
1648 |
| - var right = other.$$.ptr; |
| 1644 | + while (leftClass.baseClass) { |
| 1645 | + left = leftClass.upcast(left); |
| 1646 | + leftClass = leftClass.baseClass; |
| 1647 | + } |
1649 | 1648 |
|
1650 |
| - while (leftClass.baseClass) { |
1651 |
| - left = leftClass.upcast(left); |
1652 |
| - leftClass = leftClass.baseClass; |
1653 |
| - } |
| 1649 | + while (rightClass.baseClass) { |
| 1650 | + right = rightClass.upcast(right); |
| 1651 | + rightClass = rightClass.baseClass; |
| 1652 | + } |
1654 | 1653 |
|
1655 |
| - while (rightClass.baseClass) { |
1656 |
| - right = rightClass.upcast(right); |
1657 |
| - rightClass = rightClass.baseClass; |
1658 |
| - } |
| 1654 | + return leftClass === rightClass && left === right; |
| 1655 | + }, |
1659 | 1656 |
|
1660 |
| - return leftClass === rightClass && left === right; |
1661 |
| - }, |
| 1657 | + "clone"() { |
| 1658 | + if (!this.$$.ptr) { |
| 1659 | + throwInstanceAlreadyDeleted(this); |
| 1660 | + } |
1662 | 1661 |
|
1663 |
| - $throwInstanceAlreadyDeleted__deps: ['$throwBindingError'], |
1664 |
| - $throwInstanceAlreadyDeleted: (obj) => { |
1665 |
| - function getInstanceTypeName(handle) { |
1666 |
| - return handle.$$.ptrType.registeredClass.name; |
1667 |
| - } |
1668 |
| - throwBindingError(getInstanceTypeName(obj) + ' instance already deleted'); |
1669 |
| - }, |
| 1662 | + if (this.$$.preservePointerOnDelete) { |
| 1663 | + this.$$.count.value += 1; |
| 1664 | + return this; |
| 1665 | + } else { |
| 1666 | + var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), { |
| 1667 | + $$: { |
| 1668 | + value: shallowCopyInternalPointer(this.$$), |
| 1669 | + } |
| 1670 | + })); |
1670 | 1671 |
|
1671 |
| - $ClassHandle_clone__docs: '/** @suppress {globalThis} */', |
1672 |
| - $ClassHandle_clone__deps: ['$shallowCopyInternalPointer', '$throwInstanceAlreadyDeleted', '$attachFinalizer'], |
1673 |
| - $ClassHandle_clone: function() { |
1674 |
| - if (!this.$$.ptr) { |
1675 |
| - throwInstanceAlreadyDeleted(this); |
1676 |
| - } |
| 1672 | + clone.$$.count.value += 1; |
| 1673 | + clone.$$.deleteScheduled = false; |
| 1674 | + return clone; |
| 1675 | + } |
| 1676 | + }, |
1677 | 1677 |
|
1678 |
| - if (this.$$.preservePointerOnDelete) { |
1679 |
| - this.$$.count.value += 1; |
1680 |
| - return this; |
1681 |
| - } else { |
1682 |
| - var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), { |
1683 |
| - $$: { |
1684 |
| - value: shallowCopyInternalPointer(this.$$), |
| 1678 | + "delete"() { |
| 1679 | + if (!this.$$.ptr) { |
| 1680 | + throwInstanceAlreadyDeleted(this); |
1685 | 1681 | }
|
1686 |
| - })); |
1687 | 1682 |
|
1688 |
| - clone.$$.count.value += 1; |
1689 |
| - clone.$$.deleteScheduled = false; |
1690 |
| - return clone; |
1691 |
| - } |
1692 |
| - }, |
| 1683 | + if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { |
| 1684 | + throwBindingError('Object already scheduled for deletion'); |
| 1685 | + } |
1693 | 1686 |
|
1694 |
| - $ClassHandle_delete__docs: '/** @suppress {globalThis} */', |
1695 |
| - $ClassHandle_delete__deps: ['$releaseClassHandle', '$throwBindingError', |
1696 |
| - '$detachFinalizer', '$throwInstanceAlreadyDeleted'], |
1697 |
| - $ClassHandle_delete: function() { |
1698 |
| - if (!this.$$.ptr) { |
1699 |
| - throwInstanceAlreadyDeleted(this); |
1700 |
| - } |
| 1687 | + detachFinalizer(this); |
| 1688 | + releaseClassHandle(this.$$); |
1701 | 1689 |
|
1702 |
| - if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { |
1703 |
| - throwBindingError('Object already scheduled for deletion'); |
1704 |
| - } |
| 1690 | + if (!this.$$.preservePointerOnDelete) { |
| 1691 | + this.$$.smartPtr = undefined; |
| 1692 | + this.$$.ptr = undefined; |
| 1693 | + } |
| 1694 | + }, |
1705 | 1695 |
|
1706 |
| - detachFinalizer(this); |
1707 |
| - releaseClassHandle(this.$$); |
| 1696 | + "isDeleted"() { |
| 1697 | + return !this.$$.ptr; |
| 1698 | + }, |
1708 | 1699 |
|
1709 |
| - if (!this.$$.preservePointerOnDelete) { |
1710 |
| - this.$$.smartPtr = undefined; |
1711 |
| - this.$$.ptr = undefined; |
1712 |
| - } |
| 1700 | + "deleteLater"() { |
| 1701 | + if (!this.$$.ptr) { |
| 1702 | + throwInstanceAlreadyDeleted(this); |
| 1703 | + } |
| 1704 | + if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { |
| 1705 | + throwBindingError('Object already scheduled for deletion'); |
| 1706 | + } |
| 1707 | + deletionQueue.push(this); |
| 1708 | + if (deletionQueue.length === 1 && delayFunction) { |
| 1709 | + delayFunction(flushPendingDeletes); |
| 1710 | + } |
| 1711 | + this.$$.deleteScheduled = true; |
| 1712 | + return this; |
| 1713 | + }, |
| 1714 | + }); |
1713 | 1715 | },
|
1714 | 1716 |
|
1715 |
| - $deletionQueue: [], |
1716 |
| - |
1717 |
| - $ClassHandle_isDeleted__docs: '/** @suppress {globalThis} */', |
1718 |
| - $ClassHandle_isDeleted: function() { |
1719 |
| - return !this.$$.ptr; |
| 1717 | + $ClassHandle__docs: '/** @constructor */', |
| 1718 | + $ClassHandle__deps: ['$init_ClassHandle'], |
| 1719 | + $ClassHandle__postset: 'init_ClassHandle()', |
| 1720 | + // root of all pointer and smart pointer handles in embind |
| 1721 | + $ClassHandle: function() { |
1720 | 1722 | },
|
1721 | 1723 |
|
1722 |
| - $ClassHandle_deleteLater__docs: '/** @suppress {globalThis} */', |
1723 |
| - $ClassHandle_deleteLater__deps: [ |
1724 |
| - '$delayFunction', '$deletionQueue', '$flushPendingDeletes'], |
1725 |
| - $ClassHandle_deleteLater: function() { |
1726 |
| - if (!this.$$.ptr) { |
1727 |
| - throwInstanceAlreadyDeleted(this); |
1728 |
| - } |
1729 |
| - if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { |
1730 |
| - throwBindingError('Object already scheduled for deletion'); |
1731 |
| - } |
1732 |
| - deletionQueue.push(this); |
1733 |
| - if (deletionQueue.length === 1 && delayFunction) { |
1734 |
| - delayFunction(flushPendingDeletes); |
| 1724 | + $throwInstanceAlreadyDeleted__deps: ['$throwBindingError'], |
| 1725 | + $throwInstanceAlreadyDeleted: (obj) => { |
| 1726 | + function getInstanceTypeName(handle) { |
| 1727 | + return handle.$$.ptrType.registeredClass.name; |
1735 | 1728 | }
|
1736 |
| - this.$$.deleteScheduled = true; |
1737 |
| - return this; |
| 1729 | + throwBindingError(getInstanceTypeName(obj) + ' instance already deleted'); |
1738 | 1730 | },
|
1739 | 1731 |
|
| 1732 | + $deletionQueue: [], |
| 1733 | + |
1740 | 1734 | $flushPendingDeletes__deps: ['$deletionQueue'],
|
1741 | 1735 | $flushPendingDeletes: () => {
|
1742 | 1736 | while (deletionQueue.length) {
|
@@ -2322,9 +2316,7 @@ var LibraryEmbind = {
|
2322 | 2316 | };
|
2323 | 2317 |
|
2324 | 2318 | ctor.prototype = Object.create(wrapperPrototype);
|
2325 |
| - for (var p in properties) { |
2326 |
| - ctor.prototype[p] = properties[p]; |
2327 |
| - } |
| 2319 | + Object.assign(ctor.prototype, properties); |
2328 | 2320 | return Emval.toHandle(ctor);
|
2329 | 2321 | },
|
2330 | 2322 |
|
|
0 commit comments