diff options
author | Bill Welden <bwelden@imvu.com> | 2013-01-08 09:44:28 -0800 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-12 14:23:00 +0300 |
commit | 84b49c917c177e9fa49798b45a543f3ce68bf30b (patch) | |
tree | e974c710f04c2910bb8d10ee1132ddb92f787a23 /system | |
parent | f4480b5d9b8281911249eca0bff4fa86f249a467 (diff) |
Revert "Auto upcast of pointer parameters to C++ routines."
This reverts commit 64cc5c47bed294d5efa2433655552530c0242503.
Diffstat (limited to 'system')
-rwxr-xr-x | system/include/emscripten/bind.h | 27 | ||||
-rwxr-xr-x | system/lib/embind/bind.cpp | 7 |
2 files changed, 6 insertions, 28 deletions
diff --git a/system/include/emscripten/bind.h b/system/include/emscripten/bind.h index bbce9a93..592928f5 100755 --- a/system/include/emscripten/bind.h +++ b/system/include/emscripten/bind.h @@ -98,7 +98,6 @@ namespace emscripten { TYPEID pointeeType, bool isPolymorphic, const char* pointerName, - GenericFunction constructor, GenericFunction destructor, GenericFunction getPointee); @@ -283,18 +282,9 @@ namespace emscripten { return *static_cast<ToType*>(&from); }; - template<typename FromRawType, typename ToRawType, bool isPolymorphic> - struct performShared { - static std::shared_ptr<ToRawType> cast(std::shared_ptr<FromRawType> from) { - return std::dynamic_pointer_cast<ToRawType>(from); - }; - }; - template<typename FromRawType, typename ToRawType> - struct performShared<FromRawType, ToRawType, false> { - static std::shared_ptr<ToRawType> cast(std::shared_ptr<FromRawType> from) { - return std::shared_ptr<ToRawType>(from, static_cast<ToRawType*>(from.get())); - }; + std::shared_ptr<ToRawType> performSharedStaticCast(std::shared_ptr<FromRawType> from) { + return std::shared_ptr<ToRawType>(from, static_cast<ToRawType*>(from.get())); }; template<typename ReturnType, typename... Args, typename... Policies> @@ -322,14 +312,6 @@ namespace emscripten { ); } - template<typename PointerType> - void nullDeallocator(PointerType* p) {} - - template<typename PointerType> - typename std::shared_ptr<PointerType> raw_smart_pointer_constructor(PointerType *ptr, void (PointerType*)) { - return std::shared_ptr<PointerType>(ptr, nullDeallocator<PointerType>); - } - template<typename ClassType> void raw_destructor(ClassType* ptr) { delete ptr; @@ -622,7 +604,6 @@ namespace emscripten { TypeID<PointeeType>::get(), std::is_polymorphic<PointeeType>::value, name, - reinterpret_cast<GenericFunction>(&raw_smart_pointer_constructor<PointeeType*>), reinterpret_cast<GenericFunction>(&raw_destructor<PointerType>), reinterpret_cast<GenericFunction>(&get_pointee<PointerType>)); @@ -639,8 +620,8 @@ namespace emscripten { TypeID<ReturnPointeeType>::get(), std::is_polymorphic<PointeeType>::value, methodName, - reinterpret_cast<GenericFunction>(&performShared<PointeeType, ReturnPointeeType, std::is_polymorphic<PointeeType>::value>::cast)); - return *this; + reinterpret_cast<GenericFunction>(&performSharedStaticCast<PointeeType,ReturnPointeeType>)); + return *this; } }; diff --git a/system/lib/embind/bind.cpp b/system/lib/embind/bind.cpp index a4b67fa5..46924505 100755 --- a/system/lib/embind/bind.cpp +++ b/system/lib/embind/bind.cpp @@ -190,6 +190,8 @@ namespace emscripten { // __dynamicPointerCast performs a C++ dynamic_cast<>() operation, but allowing run-time specification of
// the from and to pointer types.
int EMSCRIPTEN_KEEPALIVE __dynamicPointerCast(int p, int to) {
+ // The final parameter is a place-holder for a hint, a feature which is not currently implemented
+ // in the emscripten runtime. The compiler passes a dummy value of -1, and so do we.
int ret = (int)__staticPointerCast((void *)p, __getDynamicPointerType(p), to);
if (ret < 0) {
return 0;
@@ -212,16 +214,11 @@ namespace emscripten { return name;
}
- int EMSCRIPTEN_KEEPALIVE __peek32(int p) {
- return *(int *)p;
- }
-
EMSCRIPTEN_BINDINGS(([]() {
// We bind __getDerivationPath in order to take advantage of the std::vector to Javascript array
// conversion for the return value. This has the unfortunate side-effect of exposing it to third party
// developers, but perhaps the double underscore will scare them away from calling it.
function("__getDerivationPath", &__getDerivationPath);
- function("__peek32", &__peek32);
}));
}
|