aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChad Austin <chad@imvu.com>2013-03-06 03:17:51 -0800
committerJukka Jylänki <jujjyl@gmail.com>2013-04-12 14:24:57 +0300
commit8be7ebc9ccc6281a9e7481340d28255567608920 (patch)
treec3052e9d64bbca72010a06680e7315bf36d2bb7b /src
parentc1114a970b3eb8cb022aad9345289c81279c3c38 (diff)
Explicitly specify base classes. Alas, but it must be done for instanceof :(
Diffstat (limited to 'src')
-rwxr-xr-xsrc/embind/embind.js17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js
index 447bea1b..b9507d5f 100755
--- a/src/embind/embind.js
+++ b/src/embind/embind.js
@@ -69,6 +69,7 @@ function _embind_repr(v) {
var typeRegistry = {};
var deferredRegistrations = [];
+var baseClasses = {}; // rawType -> rawBaseType
function requestDeferredRegistration(registrationFunction) {
deferredRegistrations.push(registrationFunction);
@@ -118,10 +119,10 @@ function collectRegisteredBaseClasses(rawType) {
if (undefined === rawType) {
return [];
}
- var rawBaseTypes = Module.__getBaseClasses(rawType);
+ var rawBaseTypes = baseClasses[rawType] || [];
var baseTypes = [];
- for (var i = 0; i < rawBaseTypes.size(); i++) {
- var baseType = typeRegistry[rawBaseTypes.get(i)];
+ for (var i = 0; i < rawBaseTypes.length; i++) {
+ var baseType = typeRegistry[rawBaseTypes[i]];
if (baseType) {
baseTypes.push(baseType);
} else {
@@ -750,7 +751,7 @@ function __embind_register_smart_ptr(
function ClassHandle() {
}
-function RegisteredClass(name, isPolymorphic, baseClass) {
+function RegisteredClass(name, isPolymorphic, baseClassRawType) {
this.name = name;
this.isPolymorphic = isPolymorphic;
}
@@ -760,7 +761,7 @@ function __embind_register_class(
rawType,
rawPointerType,
rawConstPointerType,
- baseClassType,
+ baseClassRawType,
isPolymorphic,
name,
rawDestructor
@@ -768,7 +769,11 @@ function __embind_register_class(
name = Pointer_stringify(name);
rawDestructor = FUNCTION_TABLE[rawDestructor];
- var registeredClass = new RegisteredClass(name, isPolymorphic);
+ if (baseClassRawType) {
+ baseClasses[rawType] = [baseClassRawType];
+ }
+
+ var registeredClass = new RegisteredClass(name, isPolymorphic, baseClassRawType);
var Handle = createNamedFunction(name, function(ptr) {
Object.defineProperty(this, '$$', {