From 188fd4082b61b5df76a86ec6c3a6ee4f173027de Mon Sep 17 00:00:00 2001 From: Bruno Seny <bruno.seny@student.uclouvain.be> Date: Wed, 17 Mar 2010 09:15:02 +0000 Subject: [PATCH] Bindings for constructor with 5 arguments --- Common/LuaBindings.h | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/Common/LuaBindings.h b/Common/LuaBindings.h index 36cbe04951..aa32cd5d0d 100644 --- a/Common/LuaBindings.h +++ b/Common/LuaBindings.h @@ -672,16 +672,16 @@ class methodBindingT:public luaMethodBinding { } }; -template <typename tObj, typename t0=void, typename t1=void , typename t2=void, typename t3=void> +template <typename tObj, typename t0=void, typename t1=void , typename t2=void, typename t3=void, typename t4=void> class constructorBindingT:public luaMethodBinding { public: int call (lua_State *L) { lua_remove(L,1); - (luaStack<tObj*>::push(L,new tObj(luaStack<t0>::get(L,1),luaStack<t1>::get(L,2),luaStack<t2>::get(L,3), luaStack<t3>::get(L,4)))); + (luaStack<tObj*>::push(L,new tObj(luaStack<t0>::get(L,1),luaStack<t1>::get(L,2),luaStack<t2>::get(L,3), luaStack<t3>::get(L,4), luaStack<t4>::get(L, 5)))); return 1; } void getArgTypeNames(std::vector<std::string> &names) { - argTypeNames<void (tObj::*)(t0,t1,t2,t3)>::get(names); + argTypeNames<void (tObj::*)(t0,t1,t2,t3,t4)>::get(names); } }; @@ -698,7 +698,7 @@ class constructorBindingT<tObj,void,void,void,void>:public luaMethodBinding { } }; template <typename tObj, typename t0> -class constructorBindingT<tObj,t0,void,void,void>:public luaMethodBinding { +class constructorBindingT<tObj,t0,void,void,void,void>:public luaMethodBinding { public: int call (lua_State *L) { lua_remove(L,1); @@ -710,7 +710,7 @@ class constructorBindingT<tObj,t0,void,void,void>:public luaMethodBinding { } }; template <typename tObj, typename t0, typename t1> -class constructorBindingT<tObj,t0,t1,void,void>:public luaMethodBinding { +class constructorBindingT<tObj,t0,t1,void,void, void>:public luaMethodBinding { public: int call (lua_State *L) { lua_remove(L,1); @@ -722,7 +722,7 @@ class constructorBindingT<tObj,t0,t1,void,void>:public luaMethodBinding { } }; template <typename tObj, typename t0, typename t1, typename t2> -class constructorBindingT<tObj,t0,t1,t2,void>:public luaMethodBinding { +class constructorBindingT<tObj,t0,t1,t2,void,void>:public luaMethodBinding { public: int call (lua_State *L) { lua_remove(L,1); @@ -733,6 +733,18 @@ class constructorBindingT<tObj,t0,t1,t2,void>:public luaMethodBinding { argTypeNames<void (tObj::*)(t0,t1,t2)>::get(names); } }; +template <typename tObj, typename t0, typename t1, typename t2, typename t3> +class constructorBindingT<tObj,t0,t1,t2,t3,void>:public luaMethodBinding { + public: + int call (lua_State *L) { + lua_remove(L,1); + (luaStack<tObj*>::push(L,new tObj(luaStack<t0>::get(L,1),luaStack<t1>::get(L,2),luaStack<t2>::get(L,3), luaStack<t3>::get(L,4)))); + return 1; + } + void getArgTypeNames(std::vector<std::string> &names) { + argTypeNames<void (tObj::*)(t0,t1,t2,t3)>::get(names); + } +}; class classBinding { std::string _className; @@ -850,6 +862,12 @@ public: lua_pop(L,1); return mb; } + template <typename tObj, typename t0, typename t1, typename t2, typename t3, typename t4> + methodBinding *setConstructor(){ + luaMethodBinding *constructorLua = new constructorBindingT<tObj,t0,t1,t2,t3,t4>; + setConstructorLuaMethod(constructorLua); + return constructorLua; + } template <typename tObj, typename t0, typename t1, typename t2, typename t3 > methodBinding *setConstructor(){ luaMethodBinding *constructorLua = new constructorBindingT<tObj,t0,t1,t2,t3>; -- GitLab