diff options
Diffstat (limited to 'system')
-rwxr-xr-x | system/include/emscripten/bind.h | 27 | ||||
-rwxr-xr-x | system/include/emscripten/wire.h | 5 |
2 files changed, 14 insertions, 18 deletions
diff --git a/system/include/emscripten/bind.h b/system/include/emscripten/bind.h index 7c59a0ce..08118259 100755 --- a/system/include/emscripten/bind.h +++ b/system/include/emscripten/bind.h @@ -48,7 +48,6 @@ namespace emscripten { void _embind_register_function( const char* name, - TYPEID returnType, unsigned argCount, TYPEID argTypes[], GenericFunction invoker, @@ -126,7 +125,6 @@ namespace emscripten { void _embind_register_class_method( TYPEID classType, const char* methodName, - TYPEID returnType, unsigned argCount, TYPEID argTypes[], GenericFunction invoker, @@ -157,7 +155,6 @@ namespace emscripten { void _embind_register_class_classmethod( TYPEID classType, const char* methodName, - TYPEID returnType, unsigned argCount, TYPEID argTypes[], GenericFunction invoker, @@ -165,7 +162,6 @@ namespace emscripten { void _embind_register_class_operator_call( TYPEID classType, - TYPEID returnType, unsigned argCount, TYPEID argTypes[], GenericFunction invoker @@ -206,7 +202,11 @@ namespace emscripten { template<int Index> struct arg { - static constexpr int index = Index; + static constexpr int index = Index + 1; + }; + + struct ret_val { + static constexpr int index = 0; }; template<typename Slot> @@ -282,10 +282,9 @@ namespace emscripten { registerStandardTypes(); - typename WithPolicies<Policies...>::template ArgTypeList<Args...> args; + typename WithPolicies<Policies...>::template ArgTypeList<ReturnType, Args...> args; _embind_register_function( name, - TypeID<ReturnType>::get(), args.count, args.types, reinterpret_cast<GenericFunction>(&Invoker<ReturnType, Args...>::invoke), @@ -661,7 +660,7 @@ namespace emscripten { class_& constructor(Policies...) { using namespace internal; - typename WithPolicies<Policies...>::template ArgTypeList<ConstructorArgs...> args; + typename WithPolicies<Policies...>::template ArgTypeList<void, ConstructorArgs...> args; _embind_register_class_constructor( TypeID<ClassType>::get(), args.count, @@ -674,11 +673,10 @@ namespace emscripten { class_& method(const char* methodName, ReturnType (ClassType::*memberFunction)(Args...), Policies...) { using namespace internal; - typename WithPolicies<Policies...>::template ArgTypeList<Args...> args; + typename WithPolicies<Policies...>::template ArgTypeList<ReturnType, Args...> args; _embind_register_class_method( TypeID<ClassType>::get(), methodName, - TypeID<ReturnType>::get(), args.count, args.types, reinterpret_cast<GenericFunction>(&MethodInvoker<ClassType, ReturnType, Args...>::invoke), @@ -691,11 +689,10 @@ namespace emscripten { class_& method(const char* methodName, ReturnType (ClassType::*memberFunction)(Args...) const, Policies...) { using namespace internal; - typename WithPolicies<Policies...>::template ArgTypeList<Args...> args; + typename WithPolicies<Policies...>::template ArgTypeList<ReturnType, Args...> args; _embind_register_class_method( TypeID<ClassType>::get(), methodName, - TypeID<ReturnType>::get(), args.count, args.types, reinterpret_cast<GenericFunction>(&ConstMethodInvoker<ClassType, ReturnType, Args...>::invoke), @@ -723,11 +720,10 @@ namespace emscripten { class_& classmethod(const char* methodName, ReturnType (*classMethod)(Args...), Policies...) { using namespace internal; - typename WithPolicies<Policies...>::template ArgTypeList<Args...> args; + typename WithPolicies<Policies...>::template ArgTypeList<ReturnType, Args...> args; _embind_register_class_classmethod( TypeID<ClassType>::get(), methodName, - TypeID<ReturnType>::get(), args.count, args.types, reinterpret_cast<internal::GenericFunction>(&internal::Invoker<ReturnType, Args...>::invoke), @@ -739,10 +735,9 @@ namespace emscripten { class_& calloperator(Policies...) { using namespace internal; - typename WithPolicies<Policies...>::template ArgTypeList<Args...> args; + typename WithPolicies<Policies...>::template ArgTypeList<ReturnType, Args...> args; _embind_register_class_operator_call( TypeID<ClassType>::get(), - TypeID<ReturnType>::get(), args.count, args.types, reinterpret_cast<internal::GenericFunction>(&internal::FunctorInvoker<ClassType, ReturnType, Args...>::invoke)); diff --git a/system/include/emscripten/wire.h b/system/include/emscripten/wire.h index 99c4f926..bb70f26c 100755 --- a/system/include/emscripten/wire.h +++ b/system/include/emscripten/wire.h @@ -104,7 +104,6 @@ namespace emscripten { template<typename... Policies> static void fill(TYPEID* argTypes) { typedef typename ExecutePolicies<Policies...>::template With<T, Index>::type TransformT; - *argTypes = TypeID<TransformT>::get(); return ArgTypes<Index + 1, Remaining...>::template fill<Policies...>(argTypes + 1); } @@ -204,7 +203,9 @@ namespace emscripten { template<typename T> struct BindingType<T*> { typedef T* WireType; - + static WireType toWireType(T* p) { + return p; + } static T* fromWireType(WireType wt) { return wt; } |