diff options
author | Chad Austin <chad@imvu.com> | 2013-02-28 16:33:00 -0800 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-12 14:24:38 +0300 |
commit | 3adc0bd5ed011987ae2c396027e3dcc5ebdea92e (patch) | |
tree | a23c314007a260a4cf79c46935e1be6d09598c4b /system | |
parent | f23cc669e328eec1c088b2a39637ccef7dfb5e84 (diff) |
Turns out we can simplify and reuse a lot of code :o
Diffstat (limited to 'system')
-rwxr-xr-x | system/include/emscripten/bind.h | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/system/include/emscripten/bind.h b/system/include/emscripten/bind.h index baa579c6..15bbfc86 100755 --- a/system/include/emscripten/bind.h +++ b/system/include/emscripten/bind.h @@ -116,13 +116,6 @@ namespace emscripten { GenericFunction invoker, GenericFunction constructor); - void _embind_register_class_smart_ptr_constructor( - TYPEID classType, - unsigned argCount, - TYPEID argTypes[], - GenericFunction invoker, - GenericFunction constructor); - void _embind_register_class_method( TYPEID classType, const char* methodName, @@ -633,7 +626,7 @@ namespace emscripten { class_& constructor(ClassType* (*factory)(Args...), Policies...) { using namespace internal; - typename WithPolicies<Policies...>::template ArgTypeList<void, Args...> args; + typename WithPolicies<Policies...>::template ArgTypeList<AllowedRawPointer<ClassType>, Args...> args; _embind_register_class_constructor( TypeID<ClassType>::get(), args.count, @@ -643,15 +636,15 @@ namespace emscripten { return *this; } - template<typename SmartPtr, typename... Args> - class_& constructor(SmartPtr (*factory)(Args...)) { + template<typename SmartPtr, typename... Args, typename... Policies> + class_& constructor(SmartPtr (*factory)(Args...), Policies...) { using namespace internal; - // todo: generate unique name + // TODO: generate unique name smart_ptr<SmartPtr>("SmartPtr"); - typename WithPolicies<>::template ArgTypeList<SmartPtr, Args...> args; - _embind_register_class_smart_ptr_constructor( + typename WithPolicies<Policies...>::template ArgTypeList<SmartPtr, Args...> args; + _embind_register_class_constructor( TypeID<ClassType>::get(), args.count, args.types, |