diff options
author | Chad Austin <chad@imvu.com> | 2013-03-06 03:38:28 -0800 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-12 14:24:59 +0300 |
commit | 3f44445f45aae6b9014985d352dfb74674728881 (patch) | |
tree | f6e77a080e711a148649fbf659bcf81ac9644c33 /src/embind/embind.js | |
parent | 8be7ebc9ccc6281a9e7481340d28255567608920 (diff) |
further simplifications
Diffstat (limited to 'src/embind/embind.js')
-rwxr-xr-x | src/embind/embind.js | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js index b9507d5f..3f10d886 100755 --- a/src/embind/embind.js +++ b/src/embind/embind.js @@ -115,28 +115,28 @@ function createInheritedFunctionOrProperty(name, type, nameInBaseClass, baseClas } } -function collectRegisteredBaseClasses(rawType) { +function collectRegisteredBaseClasses(type) { + var rawType = type.rawType; if (undefined === rawType) { return []; } - var rawBaseTypes = baseClasses[rawType] || []; - var baseTypes = []; - for (var i = 0; i < rawBaseTypes.length; i++) { - var baseType = typeRegistry[rawBaseTypes[i]]; - if (baseType) { - baseTypes.push(baseType); - } else { - baseTypes = baseTypes.concat(collectRegisteredBaseClasses(rawBaseTypes.get(i))); - } + var rawBaseType = baseClasses[rawType]; + if (!rawBaseType) { + return []; + } + var baseType = typeRegistry[rawBaseType]; + if (baseType) { + return [baseType]; + } else { + return collectRegisteredBaseClasses(baseType); } - return baseTypes; } function resolveType(type) { if (!type.resolved) { var baseClassType, name, baseProto; var inheritedNames = {}; - var baseTypes = collectRegisteredBaseClasses(type.rawType); + var baseTypes = collectRegisteredBaseClasses(type); for (var i = 0; i < baseTypes.length; i++) { var baseType = baseTypes[i]; resolveType(baseType); @@ -754,6 +754,7 @@ function ClassHandle() { function RegisteredClass(name, isPolymorphic, baseClassRawType) { this.name = name; this.isPolymorphic = isPolymorphic; + this.baseClassRawType = baseClassRawType; } // TODO: null pointers are always zero (not a Handle) in Javascript @@ -770,7 +771,7 @@ function __embind_register_class( rawDestructor = FUNCTION_TABLE[rawDestructor]; if (baseClassRawType) { - baseClasses[rawType] = [baseClassRawType]; + baseClasses[rawType] = baseClassRawType; } var registeredClass = new RegisteredClass(name, isPolymorphic, baseClassRawType); |