aboutsummaryrefslogtreecommitdiff
path: root/system
diff options
context:
space:
mode:
authorChad Austin <chad@imvu.com>2013-02-28 16:33:00 -0800
committerJukka Jylänki <jujjyl@gmail.com>2013-04-12 14:24:38 +0300
commit3adc0bd5ed011987ae2c396027e3dcc5ebdea92e (patch)
treea23c314007a260a4cf79c46935e1be6d09598c4b /system
parentf23cc669e328eec1c088b2a39637ccef7dfb5e84 (diff)
Turns out we can simplify and reuse a lot of code :o
Diffstat (limited to 'system')
-rwxr-xr-xsystem/include/emscripten/bind.h19
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,