18template <
typename Ret>
24template <
typename Ret,
typename Arg1>
27 auto arg1 = LuaPull<Arg1>(l, index);
31template <
typename Ret,
typename Arg1,
typename Arg2>
34 auto arg1 = LuaPull<Arg1>(l, index);
35 auto arg2 = LuaPull<Arg2>(l, index + 1);
36 return fn(arg1, arg2);
39template <
typename Ret,
typename Arg1,
typename Arg2,
typename Arg3>
42 auto arg1 = LuaPull<Arg1>(l, index);
43 auto arg2 = LuaPull<Arg2>(l, index + 1);
44 auto arg3 = LuaPull<Arg3>(l, index + 2);
45 return fn(arg1, arg2, arg3);
48template <
typename Ret,
typename Arg1,
typename Arg2,
typename Arg3,
typename Arg4>
51 auto arg1 = LuaPull<Arg1>(l, index);
52 auto arg2 = LuaPull<Arg2>(l, index + 1);
53 auto arg3 = LuaPull<Arg3>(l, index + 2);
54 auto arg4 = LuaPull<Arg4>(l, index + 3);
55 return fn(arg1, arg2, arg3, arg4);
58template <
typename Ret,
typename Arg1,
typename Arg2,
typename Arg3,
typename Arg4,
typename Arg5>
61 auto arg1 = LuaPull<Arg1>(l, index);
62 auto arg2 = LuaPull<Arg2>(l, index + 1);
63 auto arg3 = LuaPull<Arg3>(l, index + 2);
64 auto arg4 = LuaPull<Arg4>(l, index + 3);
65 auto arg5 = LuaPull<Arg5>(l, index + 4);
66 return fn(arg1, arg2, arg3, arg4, arg5);
69template <
typename Ret,
typename Arg1,
typename Arg2,
typename Arg3,
typename Arg4,
typename Arg5,
typename Arg6>
72 auto arg1 = LuaPull<Arg1>(l, index);
73 auto arg2 = LuaPull<Arg2>(l, index + 1);
74 auto arg3 = LuaPull<Arg3>(l, index + 2);
75 auto arg4 = LuaPull<Arg4>(l, index + 3);
76 auto arg5 = LuaPull<Arg5>(l, index + 4);
77 auto arg6 = LuaPull<Arg6>(l, index + 5);
78 return fn(arg1, arg2, arg3, arg4, arg5, arg6);
81template <
typename Ret,
typename Arg1,
typename Arg2,
typename Arg3,
typename Arg4,
typename Arg5,
typename Arg6,
typename Arg7>
84 auto arg1 = LuaPull<Arg1>(l, index);
85 auto arg2 = LuaPull<Arg2>(l, index + 1);
86 auto arg3 = LuaPull<Arg3>(l, index + 2);
87 auto arg4 = LuaPull<Arg4>(l, index + 3);
88 auto arg5 = LuaPull<Arg5>(l, index + 4);
89 auto arg6 = LuaPull<Arg6>(l, index + 5);
90 auto arg7 = LuaPull<Arg7>(l, index + 6);
91 return fn(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
98template <
class T,
typename Ret>
104template <
class T,
typename Ret,
typename Arg1>
107 auto arg1 = LuaPull<Arg1>(l, index + 1);
108 return (ptr->*fn)(arg1);
111template <
class T,
typename Ret,
typename Arg1,
typename Arg2>
114 auto arg1 = LuaPull<Arg1>(l, index + 1);
115 auto arg2 = LuaPull<Arg2>(l, index + 2);
116 return (ptr->*fn)(arg1, arg2);
119template <
class T,
typename Ret,
typename Arg1,
typename Arg2,
typename Arg3>
122 auto arg1 = LuaPull<Arg1>(l, index + 1);
123 auto arg2 = LuaPull<Arg2>(l, index + 2);
124 auto arg3 = LuaPull<Arg3>(l, index + 3);
125 return (ptr->*fn)(arg1, arg2, arg3);
128template <
class T,
typename Ret,
typename Arg1,
typename Arg2,
typename Arg3,
typename Arg4>
131 auto arg1 = LuaPull<Arg1>(l, index + 1);
132 auto arg2 = LuaPull<Arg2>(l, index + 2);
133 auto arg3 = LuaPull<Arg3>(l, index + 3);
134 auto arg4 = LuaPull<Arg4>(l, index + 4);
135 return (ptr->*fn)(arg1, arg2, arg3, arg4);
138template <
class T,
typename Ret,
typename Arg1,
typename Arg2,
typename Arg3,
typename Arg4,
typename Arg5>
141 auto arg1 = LuaPull<Arg1>(l, index + 1);
142 auto arg2 = LuaPull<Arg2>(l, index + 2);
143 auto arg3 = LuaPull<Arg3>(l, index + 3);
144 auto arg4 = LuaPull<Arg4>(l, index + 4);
145 auto arg5 = LuaPull<Arg5>(l, index + 5);
146 return (ptr->*fn)(arg1, arg2, arg3, arg4, arg5);
149template <
class T,
typename Ret,
typename Arg1,
typename Arg2,
typename Arg3,
typename Arg4,
typename Arg5,
typename Arg6>
152 auto arg1 = LuaPull<Arg1>(l, index + 1);
153 auto arg2 = LuaPull<Arg2>(l, index + 2);
154 auto arg3 = LuaPull<Arg3>(l, index + 3);
155 auto arg4 = LuaPull<Arg4>(l, index + 4);
156 auto arg5 = LuaPull<Arg5>(l, index + 5);
157 auto arg6 = LuaPull<Arg6>(l, index + 6);
158 return (ptr->*fn)(arg1, arg2, arg3, arg4, arg5, arg6);
161template <
class T,
typename Ret,
typename Arg1,
typename Arg2,
typename Arg3,
typename Arg4,
typename Arg5,
typename Arg6,
typename Arg7>
162Ret
pi_lua_multiple_call(lua_State *l,
int index, T *ptr, Ret (T::*fn)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7))
164 auto arg1 = LuaPull<Arg1>(l, index + 1);
165 auto arg2 = LuaPull<Arg2>(l, index + 2);
166 auto arg3 = LuaPull<Arg3>(l, index + 3);
167 auto arg4 = LuaPull<Arg4>(l, index + 4);
168 auto arg5 = LuaPull<Arg5>(l, index + 5);
169 auto arg6 = LuaPull<Arg6>(l, index + 6);
170 auto arg7 = LuaPull<Arg7>(l, index + 7);
171 return (ptr->*fn)(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
177template <
typename Ret,
typename... Args>
183template <
class T,
typename Ret,
typename... Args>
186 T *ptr = LuaPull<T>(l, index);
Ret pi_lua_generic_call(lua_State *l, int index, Ret(*fn)(Args...))
Definition LuaCall.h:178
Ret pi_lua_multiple_call(lua_State *l, int index, Ret(*fn)())
Definition LuaCall.h:19