diff options
Diffstat (limited to 'system')
-rwxr-xr-x | system/include/emscripten/bind.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/system/include/emscripten/bind.h b/system/include/emscripten/bind.h index 08118259..3dc6b5e7 100755 --- a/system/include/emscripten/bind.h +++ b/system/include/emscripten/bind.h @@ -114,6 +114,7 @@ namespace emscripten { TYPEID pointerType, TYPEID constPointerType, const char* className, + GenericFunction getDynamicTypeInfo, GenericFunction destructor); void _embind_register_class_constructor( @@ -265,12 +266,16 @@ namespace emscripten { // FUNCTIONS //////////////////////////////////////////////////////////////////////////////// - template<typename FromType, typename ToType> ToType& performCast(FromType& from) { return *dynamic_cast<ToType*>(&from); }; + template<typename PointerType> + internal::TYPEID getDynamicPointerType(PointerType *p) { + return reinterpret_cast<internal::TYPEID>(&typeid(*p)); + }; + template<typename FromRawType, typename ToRawType> std::shared_ptr<ToRawType> performPointerCast(std::shared_ptr<FromRawType> from) { return std::shared_ptr<ToRawType>(from, dynamic_cast<ToRawType*>(from.get())); @@ -653,6 +658,7 @@ namespace emscripten { TypeID<AllowedRawPointer<ClassType>>::get(), TypeID<AllowedRawPointer<const ClassType>>::get(), name, + reinterpret_cast<GenericFunction>(&getDynamicPointerType<ClassType>), reinterpret_cast<GenericFunction>(&raw_destructor<ClassType>)); } |