1 /* 2 ** macros to wrap function registration 3 ** 4 ** creates an inline function definition 5 ** using a set calling convention 6 ** which allows for automatic calling 7 */ 8 9 #ifndef lautocall_h 10 #define lautocall_h 11 12 #define LUAA_EVAL(...) __VA_ARGS__ 13 14 /* Join Three Strings */ 15 #define LUAA_JOIN2(X, Y) X ## Y 16 #define LUAA_JOIN3(X, Y, Z) X ## Y ## Z 17 18 /* workaround for MSVC VA_ARGS expansion */ 19 #define LUAA_APPLY(FUNC, ARGS) LUAA_EVAL(FUNC ARGS) 20 21 /* Argument Counter */ 22 #define LUAA_COUNT(...) LUAA_COUNT_COLLECT(_, ##__VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) 23 #define LUAA_COUNT_COLLECT(...) LUAA_COUNT_SHIFT(__VA_ARGS__) 24 #define LUAA_COUNT_SHIFT(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _N, ...) _N 25 26 /* Detect Void */ 27 #define LUAA_VOID(X) LUAA_JOIN2(LUAA_VOID_, X) 28 #define LUAA_VOID_void 29 #define LUAA_CHECK_N(X, N, ...) N 30 #define LUAA_CHECK(...) LUAA_CHECK_N(__VA_ARGS__, ,) 31 #define LUAA_SUFFIX(X) LUAA_SUFFIX_CHECK(LUAA_VOID(X)) 32 #define LUAA_SUFFIX_CHECK(X) LUAA_CHECK(LUAA_JOIN2(LUAA_SUFFIX_, X)) 33 #define LUAA_SUFFIX_ ~, _void, 34 35 /* Declaration and Register Macros */ 36 #define LUAA_DECLARE(func, ret_t, count, suffix, ...) LUAA_APPLY(LUAA_JOIN3(luaA_function_declare, count, suffix), (func, ret_t, ##__VA_ARGS__)) 37 //#define LUAA_DECLARE(func, ret_t, count, suffix, ...) LUAA_APPLY(LUAA_JOIN3(luaA_function_declare, count, suffix), (func, ret_t, ##__VA_ARGS__)) 38 #define LUAA_REGISTER(L, func, ret_t, count, ...) LUAA_APPLY(LUAA_JOIN2(luaA_function_register, count), (L, func, ret_t, ##__VA_ARGS__)) 39 40 /* 41 ** MSVC does not allow nested functions 42 ** so function is wrapped in nested struct 43 */ 44 #ifdef _MSC_VER 45 46 #define luaA_function_declare0(func, ret_t) \ 47 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 48 *(ret_t*)out = func(); }; } 49 50 #define luaA_function_declare0_void(func, ret_t) \ 51 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 52 func(); }; } 53 54 #define luaA_function_declare1(func, ret_t, arg0_t) \ 55 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 56 arg0_t a0 = *(arg0_t*)args; \ 57 *(ret_t*)out = func(a0); }; } 58 59 #define luaA_function_declare1_void(func, ret_t, arg0_t) \ 60 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 61 arg0_t a0 = *(arg0_t*)args; \ 62 func(a0); }; } 63 64 #define luaA_function_declare2(func, ret_t, arg0_t, arg1_t) \ 65 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 66 arg0_t a0 = *(arg0_t*)args; \ 67 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 68 *(ret_t*)out = func(a0, a1); }; } 69 70 #define luaA_function_declare2_void(func, ret_t, arg0_t, arg1_t) \ 71 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 72 arg0_t a0 = *(arg0_t*)args; \ 73 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 74 func(a0, a1); }; } 75 76 #define luaA_function_declare3(func, ret_t, arg0_t, arg1_t, arg2_t) \ 77 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 78 arg0_t a0 = *(arg0_t*)args; \ 79 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 80 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 81 *(ret_t*)out = func(a0, a1, a2); }; } 82 83 #define luaA_function_declare3_void(func, ret_t, arg0_t, arg1_t, arg2_t) \ 84 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 85 arg0_t a0 = *(arg0_t*)args; \ 86 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 87 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 88 func(a0, a1, a2); }; } 89 90 #define luaA_function_declare4(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t) \ 91 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 92 arg0_t a0 = *(arg0_t*)args; \ 93 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 94 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 95 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 96 *(ret_t*)out = func(a0, a1, a2, a3); }; } 97 98 #define luaA_function_declare4_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t) \ 99 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 100 arg0_t a0 = *(arg0_t*)args; \ 101 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 102 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 103 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 104 func(a0, a1, a2, a3); }; } 105 106 #define luaA_function_declare5(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t) \ 107 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 108 arg0_t a0 = *(arg0_t*)args; \ 109 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 110 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 111 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 112 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 113 *(ret_t*)out = func(a0, a1, a2, a3, a4); }; } 114 115 #define luaA_function_declare5_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t) \ 116 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 117 arg0_t a0 = *(arg0_t*)args; \ 118 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 119 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 120 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 121 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 122 func(a0, a1, a2, a3, a4); }; } 123 124 #define luaA_function_declare6(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t) \ 125 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 126 arg0_t a0 = *(arg0_t*)args; \ 127 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 128 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 129 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 130 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 131 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 132 *(ret_t*)out = func(a0, a1, a2, a3, a4, a5); }; } 133 134 #define luaA_function_declare6_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t) \ 135 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 136 arg0_t a0 = *(arg0_t*)args; \ 137 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 138 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 139 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 140 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 141 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 142 func(a0, a1, a2, a3, a4, a5); }; } 143 144 #define luaA_function_declare7(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t) \ 145 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 146 arg0_t a0 = *(arg0_t*)args; \ 147 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 148 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 149 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 150 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 151 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 152 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 153 *(ret_t*)out = func(a0, a1, a2, a3, a4, a5, a6); }; } 154 155 #define luaA_function_declare7_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t) \ 156 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 157 arg0_t a0 = *(arg0_t*)args; \ 158 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 159 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 160 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 161 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 162 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 163 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 164 func(a0, a1, a2, a3, a4, a5, a6); }; } 165 166 #define luaA_function_declare8(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t) \ 167 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 168 arg0_t a0 = *(arg0_t*)args; \ 169 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 170 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 171 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 172 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 173 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 174 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 175 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 176 *(ret_t*)out = func(a0, a1, a2, a3, a4, a5, a6, a7); }; } 177 178 #define luaA_function_declare8_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t) \ 179 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 180 arg0_t a0 = *(arg0_t*)args; \ 181 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 182 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 183 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 184 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 185 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 186 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 187 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 188 func(a0, a1, a2, a3, a4, a5, a6, a7); }; } 189 190 #define luaA_function_declare9(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t) \ 191 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 192 arg0_t a0 = *(arg0_t*)args; \ 193 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 194 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 195 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 196 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 197 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 198 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 199 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 200 arg8_t a8 = *(arg8_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)); \ 201 *(ret_t*)out = func(a0, a1, a2, a3, a4, a5, a6, a7, a8); }; } 202 203 #define luaA_function_declare9_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t) \ 204 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 205 arg0_t a0 = *(arg0_t*)args; \ 206 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 207 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 208 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 209 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 210 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 211 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 212 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 213 arg8_t a8 = *(arg8_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)); \ 214 func(a0, a1, a2, a3, a4, a5, a6, a7, a8); }; } 215 216 #define luaA_function_declare10(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t, arg9_t) \ 217 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 218 arg0_t a0 = *(arg0_t*)args; \ 219 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 220 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 221 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 222 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 223 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 224 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 225 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 226 arg8_t a8 = *(arg8_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)); \ 227 arg9_t a9 = *(arg9_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)+sizeof(arg8_t)); \ 228 *(ret_t*)out = func(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }; } 229 230 #define luaA_function_declare10_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t, arg9_t) \ 231 struct __luaA_wrap_##func { static void __luaA_##func(char* out, char* args) { \ 232 arg0_t a0 = *(arg0_t*)args; \ 233 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 234 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 235 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 236 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 237 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 238 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 239 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 240 arg8_t a8 = *(arg8_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)); \ 241 arg9_t a9 = *(arg9_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)+sizeof(arg8_t)); \ 242 func(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); }; } 243 244 245 #define luaA_function_register0(L, func, ret_t) \ 246 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 0) 247 248 #define luaA_function_register1(L, func, ret_t, arg0_t) \ 249 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 1, luaA_type(L, arg0_t)) 250 251 #define luaA_function_register2(L, func, ret_t, arg0_t, arg1_t) \ 252 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 2, luaA_type(L, arg0_t), luaA_type(L, arg1_t)) 253 254 #define luaA_function_register3(L, func, ret_t, arg0_t, arg1_t, arg2_t) \ 255 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 3, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t)) 256 257 #define luaA_function_register4(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t) \ 258 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 4, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t)) 259 260 #define luaA_function_register5(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t) \ 261 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 5, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t)) 262 263 #define luaA_function_register6(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t) \ 264 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 6, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t), luaA_type(L, arg5_t)) 265 266 #define luaA_function_register7(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t) \ 267 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 7, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t), luaA_type(L, arg5_t), luaA_type(L, arg6_t)) 268 269 #define luaA_function_register8(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t) \ 270 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 8, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t), luaA_type(L, arg5_t), luaA_type(L, arg6_t), luaA_type(L, arg7_t)) 271 272 #define luaA_function_register9(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t) \ 273 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 9, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t), luaA_type(L, arg5_t), luaA_type(L, arg6_t), luaA_type(L, arg7_t), luaA_type(L, arg8_t)) 274 275 #define luaA_function_register10(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t, arg9_t) \ 276 luaA_function_register_type(L, func, (luaA_Func)__luaA_wrap_##func::__luaA_##func, #func, luaA_type(L, ret_t), 10, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t), luaA_type(L, arg5_t), luaA_type(L, arg6_t), luaA_type(L, arg7_t), luaA_type(L, arg8_t), luaA_type(L, arg9_t)) 277 278 279 #else 280 281 282 #define luaA_function_declare0(func, ret_t) \ 283 void __luaA_##func(void* out, void* args) { \ 284 *(ret_t*)out = func(); } 285 286 #define luaA_function_declare0_void(func, ret_t) \ 287 void __luaA_##func(void* out, void* args) { \ 288 func(); } 289 290 #define luaA_function_declare1(func, ret_t, arg0_t) \ 291 void __luaA_##func(void* out, void* args) { \ 292 arg0_t a0 = *(arg0_t*)args; \ 293 *(ret_t*)out = func(a0); } 294 295 #define luaA_function_declare1_void(func, ret_t, arg0_t) \ 296 void __luaA_##func(void* out, void* args) { \ 297 arg0_t a0 = *(arg0_t*)args; \ 298 func(a0); } 299 300 #define luaA_function_declare2(func, ret_t, arg0_t, arg1_t) \ 301 void __luaA_##func(void* out, void* args) { \ 302 arg0_t a0 = *(arg0_t*)args; \ 303 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 304 *(ret_t*)out = func(a0, a1); } 305 306 #define luaA_function_declare2_void(func, ret_t, arg0_t, arg1_t) \ 307 void __luaA_##func(void* out, void* args) { \ 308 arg0_t a0 = *(arg0_t*)args; \ 309 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 310 func(a0, a1); } 311 312 #define luaA_function_declare3(func, ret_t, arg0_t, arg1_t, arg2_t) \ 313 void __luaA_##func(void* out, void* args) { \ 314 arg0_t a0 = *(arg0_t*)args; \ 315 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 316 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 317 *(ret_t*)out = func(a0, a1, a2); } 318 319 #define luaA_function_declare3_void(func, ret_t, arg0_t, arg1_t, arg2_t) \ 320 void __luaA_##func(void* out, void* args) { \ 321 arg0_t a0 = *(arg0_t*)args; \ 322 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 323 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 324 func(a0, a1, a2); } 325 326 #define luaA_function_declare4(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t) \ 327 void __luaA_##func(void* out, void* args) { \ 328 arg0_t a0 = *(arg0_t*)args; \ 329 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 330 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 331 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 332 *(ret_t*)out = func(a0, a1, a2, a3); } 333 334 #define luaA_function_declare4_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t) \ 335 void __luaA_##func(void* out, void* args) { \ 336 arg0_t a0 = *(arg0_t*)args; \ 337 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 338 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 339 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 340 func(a0, a1, a2, a3); } 341 342 #define luaA_function_declare5(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t) \ 343 void __luaA_##func(void* out, void* args) { \ 344 arg0_t a0 = *(arg0_t*)args; \ 345 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 346 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 347 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 348 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 349 *(ret_t*)out = func(a0, a1, a2, a3, a4); } 350 351 #define luaA_function_declare5_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t) \ 352 void __luaA_##func(void* out, void* args) { \ 353 arg0_t a0 = *(arg0_t*)args; \ 354 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 355 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 356 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 357 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 358 func(a0, a1, a2, a3, a4); } 359 360 #define luaA_function_declare6(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t) \ 361 void __luaA_##func(void* out, void* args) { \ 362 arg0_t a0 = *(arg0_t*)args; \ 363 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 364 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 365 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 366 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 367 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 368 *(ret_t*)out = func(a0, a1, a2, a3, a4, a5); } 369 370 #define luaA_function_declare6_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t) \ 371 void __luaA_##func(void* out, void* args) { \ 372 arg0_t a0 = *(arg0_t*)args; \ 373 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 374 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 375 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 376 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 377 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 378 func(a0, a1, a2, a3, a4, a5); } 379 380 #define luaA_function_declare7(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t) \ 381 void __luaA_##func(void* out, void* args) { \ 382 arg0_t a0 = *(arg0_t*)args; \ 383 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 384 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 385 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 386 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 387 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 388 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 389 *(ret_t*)out = func(a0, a1, a2, a3, a4, a5, a6); } 390 391 #define luaA_function_declare7_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t) \ 392 void __luaA_##func(void* out, void* args) { \ 393 arg0_t a0 = *(arg0_t*)args; \ 394 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 395 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 396 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 397 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 398 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 399 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 400 func(a0, a1, a2, a3, a4, a5, a6); } 401 402 #define luaA_function_declare8(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t) \ 403 void __luaA_##func(void* out, void* args) { \ 404 arg0_t a0 = *(arg0_t*)args; \ 405 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 406 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 407 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 408 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 409 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 410 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 411 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 412 *(ret_t*)out = func(a0, a1, a2, a3, a4, a5, a6, a7); } 413 414 #define luaA_function_declare8_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t) \ 415 void __luaA_##func(void* out, void* args) { \ 416 arg0_t a0 = *(arg0_t*)args; \ 417 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 418 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 419 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 420 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 421 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 422 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 423 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 424 func(a0, a1, a2, a3, a4, a5, a6, a7); } 425 426 #define luaA_function_declare9(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t) \ 427 void __luaA_##func(void* out, void* args) { \ 428 arg0_t a0 = *(arg0_t*)args; \ 429 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 430 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 431 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 432 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 433 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 434 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 435 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 436 arg8_t a8 = *(arg8_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)); \ 437 *(ret_t*)out = func(a0, a1, a2, a3, a4, a5, a6, a7, a8); } 438 439 #define luaA_function_declare9_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t) \ 440 void __luaA_##func(void* out, void* args) { \ 441 arg0_t a0 = *(arg0_t*)args; \ 442 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 443 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 444 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 445 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 446 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 447 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 448 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 449 arg8_t a8 = *(arg8_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)); \ 450 func(a0, a1, a2, a3, a4, a5, a6, a7, a8); } 451 452 #define luaA_function_declare10(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t, arg9_t) \ 453 void __luaA_##func(void* out, void* args) { \ 454 arg0_t a0 = *(arg0_t*)args; \ 455 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 456 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 457 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 458 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 459 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 460 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 461 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 462 arg8_t a8 = *(arg8_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)); \ 463 arg9_t a9 = *(arg9_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)+sizeof(arg8_t)); \ 464 *(ret_t*)out = func(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } 465 466 #define luaA_function_declare10_void(func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t, arg9_t) \ 467 void __luaA_##func(void* out, void* args) { \ 468 arg0_t a0 = *(arg0_t*)args; \ 469 arg1_t a1 = *(arg1_t*)(args+sizeof(arg0_t)); \ 470 arg2_t a2 = *(arg2_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)); \ 471 arg3_t a3 = *(arg3_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)); \ 472 arg4_t a4 = *(arg4_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)); \ 473 arg5_t a5 = *(arg5_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)); \ 474 arg6_t a6 = *(arg6_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)); \ 475 arg7_t a7 = *(arg7_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)); \ 476 arg8_t a8 = *(arg8_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)); \ 477 arg9_t a9 = *(arg9_t*)(args+sizeof(arg0_t)+sizeof(arg1_t)+sizeof(arg2_t)+sizeof(arg3_t)+sizeof(arg4_t)+sizeof(arg5_t)+sizeof(arg6_t)+sizeof(arg7_t)+sizeof(arg8_t)); \ 478 func(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } 479 480 481 #define luaA_function_register0(L, func, ret_t) \ 482 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 0) 483 484 #define luaA_function_register1(L, func, ret_t, arg0_t) \ 485 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 1, luaA_type(L, arg0_t)) 486 487 #define luaA_function_register2(L, func, ret_t, arg0_t, arg1_t) \ 488 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 2, luaA_type(L, arg0_t), luaA_type(L, arg1_t)) 489 490 #define luaA_function_register3(L, func, ret_t, arg0_t, arg1_t, arg2_t) \ 491 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 3, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t)) 492 493 #define luaA_function_register4(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t) \ 494 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 4, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t)) 495 496 #define luaA_function_register5(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t) \ 497 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 5, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t)) 498 499 #define luaA_function_register6(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t) \ 500 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 6, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t), luaA_type(L, arg5_t)) 501 502 #define luaA_function_register7(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t) \ 503 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 7, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t), luaA_type(L, arg5_t), luaA_type(L, arg6_t)) 504 505 #define luaA_function_register8(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t) \ 506 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 8, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t), luaA_type(L, arg5_t), luaA_type(L, arg6_t), luaA_type(L, arg7_t)) 507 508 #define luaA_function_register9(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t) \ 509 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 9, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t), luaA_type(L, arg5_t), luaA_type(L, arg6_t), luaA_type(L, arg7_t), luaA_type(L, arg8_t)) 510 511 #define luaA_function_register10(L, func, ret_t, arg0_t, arg1_t, arg2_t, arg3_t, arg4_t, arg5_t, arg6_t, arg7_t, arg8_t, arg9_t) \ 512 luaA_function_register_type(L, func, __luaA_##func, #func, luaA_type(L, ret_t), 10, luaA_type(L, arg0_t), luaA_type(L, arg1_t), luaA_type(L, arg2_t), luaA_type(L, arg3_t), luaA_type(L, arg4_t), luaA_type(L, arg5_t), luaA_type(L, arg6_t), luaA_type(L, arg7_t), luaA_type(L, arg8_t), luaA_type(L, arg9_t)) 513 514 515 #endif 516 517 #endif 518