diff options
-rwxr-xr-x | src/embind/embind.js | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js index b33ff223..39f136f0 100755 --- a/src/embind/embind.js +++ b/src/embind/embind.js @@ -182,7 +182,6 @@ function registerType(rawType, name, registeredInstance) { registeredInstance.rawType = rawType; registeredInstance.name = name; typeRegistry[rawType] = registeredInstance; - return registeredInstance; } function requireRegisteredType(rawType, humanName) { @@ -746,12 +745,18 @@ function __embind_register_smart_ptr( }; var registeredPointer = new RegisteredPointer(Handle, pointeeType.isPolymorphic, true, rawGetPointee, rawConstructor, rawDestructor); registeredPointer.pointeeType = pointeeType; - pointeeType.smartPointerType = registerType(rawType, name, registeredPointer); + registerType(rawType, name, registeredPointer); + pointeeType.smartPointerType = registeredPointer; } function ClassHandle() { } +function RegisteredClass(name, isPolymorphic, baseClass) { + this.name = name; + this.isPolymorphic = isPolymorphic; +} + // TODO: null pointers are always zero (not a Handle) in Javascript function __embind_register_class( rawType, @@ -765,6 +770,8 @@ function __embind_register_class( name = Pointer_stringify(name); rawDestructor = FUNCTION_TABLE[rawDestructor]; + var registeredClass = new RegisteredClass(name, isPolymorphic); + var Handle = createNamedFunction(name, function(ptr) { Object.defineProperty(this, '$$', { value: { @@ -812,8 +819,9 @@ function __embind_register_class( // todo: clean this up! var registeredClass = new RegisteredPointer(Handle, isPolymorphic, false); - var type = registerType(rawType, name, registeredClass); - registeredClass.pointeeType = type; + var type = registeredClass; + registerType(rawType, name, registeredClass); + registeredClass.pointeeType = registeredClass; var registeredClass = new RegisteredPointer(Handle, isPolymorphic, false); registerType(rawPointerType, name + '*', registeredClass); |