aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/embind/embind.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js
index 988526b4..cadee700 100755
--- a/src/embind/embind.js
+++ b/src/embind/embind.js
@@ -1054,6 +1054,32 @@ function getInstanceTypeName(handle) {
return handle.$$.ptrType.registeredClass.name;
}
+ClassHandle.prototype.isAliasOf = function(other) {
+ if (!(this instanceof ClassHandle)) {
+ return false;
+ }
+ if (!(other instanceof ClassHandle)) {
+ return false;
+ }
+
+ var leftClass = this.$$.ptrType.registeredClass;
+ var left = this.$$.ptr;
+ var rightClass = other.$$.ptrType.registeredClass;
+ var right = other.$$.ptr;
+
+ while (leftClass.baseClass) {
+ left = leftClass.upcast(left);
+ leftClass = leftClass.baseClass;
+ }
+
+ while (rightClass.baseClass) {
+ right = rightClass.upcast(right);
+ rightClass = rightClass.baseClass;
+ }
+
+ return leftClass === rightClass && left === right;
+};
+
ClassHandle.prototype.clone = function() {
if (!this.$$.ptr) {
throwBindingError(getInstanceTypeName(this) + ' instance already deleted');