|
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