Loading...
Searching...
No Matches
Go to the documentation of this file.
14#define SF_CHECK_NODE(L, arg) CheckNodeLuaType(L, arg, "Node", "cfNode")
15#define SF_CHECK_ASSET(L, Arg) CheckAssetLuaType<Asset>(L, Arg, "Asset", "cfAsset")
16#define SF_CHECK_OBJECT(L, Arg) CheckObjectLuaType(L, Arg)
18#define SF_CHECK_NODE_OR_NIL(L, arg) CheckNodeOrNilLuaType(L, arg, "Node", "cfNode")
19#define SF_CHECK_ASSET_OR_NIL(L, Arg) CheckAssetOrNilLuaType<Asset>(L, Arg, "Asset", "cfAsset")
20#define SF_CHECK_OBJECT_OR_NIL(L, Arg) CheckObjectOrNilLuaType(L, Arg)
23#define SpNode(idx) SF_CHECK_NODE(L, idx)
24#define SpAsset(idx) SF_CHECK_ASSET(L, idx)
25#define SpNodeOrNil(idx) SF_CHECK_NODE_OR_NIL(L, idx)
26#define SpAssetOrNil(idx) SF_CHECK_ASSET_OR_NIL(L, idx)
27#define SpVector(idx) LuaObjectToDatum(L, idx)
28#define SpInt(idx) lua_tointeger(L, idx)
29#define SpIndex(idx) (lua_tointeger(L, idx) - 1)
30#define SpFloat(idx) lua_tonumber(L, idx)
31#define SpString(idx) lua_tostring(L, idx)
32#define SpBool(idx) lua_toboolean(L, idx)
33#define SpFunction(idx) ScriptFunc(L, idx)
38#define SrAsset (Asset*)
40#define SrInt (int32_t)
47#define SCRIPT_FUNC_X_1(ClassName, FuncName, P0) \
48 static int ScriptFunc_##FuncName(lua_State* L) \
50 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
51 object->FuncName(P0(2)); \
54 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
56#define SCRIPT_FUNC_X_2(ClassName, FuncName, P0, P1) \
57 static int ScriptFunc_##FuncName(lua_State* L) \
59 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
60 object->FuncName(P0(2), P1(3)); \
63 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
65#define SCRIPT_FUNC_X_3(ClassName, FuncName, P0, P1, P2) \
66 static int ScriptFunc_##FuncName(lua_State* L) \
68 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
69 object->FuncName(P0(2), P1(3), P2(4)); \
72 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
74#define SCRIPT_FUNC_X_4(ClassName, FuncName, P0, P1, P2, P3) \
75 static int ScriptFunc_##FuncName(lua_State* L) \
77 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
78 object->FuncName(P0(2), P1(3), P2(4), P3(5)); \
81 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
83#define SCRIPT_FUNC_X_5(ClassName, FuncName, P0, P1, P2, P3, P4) \
84 static int ScriptFunc_##FuncName(lua_State* L) \
86 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
87 object->FuncName(P0(2), P1(3), P2(4), P3(5), P4(6)); \
90 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
92#define SCRIPT_FUNC_X_R(ClassName, FuncName, RC) \
93 static int ScriptFunc_##FuncName(lua_State* L) \
95 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
96 Datum ret = RC object->FuncName(); \
97 LuaPushDatum(L, ret); \
100 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
102#define SCRIPT_FUNC_X_R_1(ClassName, FuncName, RC, P0) \
103 static int ScriptFunc_##FuncName(lua_State* L) \
105 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
106 Datum ret = RC object->FuncName(P0(2)); \
107 LuaPushDatum(L, ret); \
110 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
112#define SCRIPT_FUNC_X_R_2(ClassName, FuncName, RC, P0, P1) \
113 static int ScriptFunc_##FuncName(lua_State* L) \
115 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
116 Datum ret = RC object->FuncName(P0(2), P1(3)); \
117 LuaPushDatum(L, ret); \
120 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
122#define SCRIPT_FUNC_X_R_3(ClassName, FuncName, RC, P0, P1, P2) \
123 static int ScriptFunc_##FuncName(lua_State* L) \
125 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
126 Datum ret = RC object->FuncName(P0(2), P1(3), P2(4)); \
127 LuaPushDatum(L, ret); \
130 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
132#define SCRIPT_FUNC_X_R_4(ClassName, FuncName, RC, P0, P1, P2, P3) \
133 static int ScriptFunc_##FuncName(lua_State* L) \
135 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
136 Datum ret = RC object->FuncName(P0(2), P1(3), P2(4), P3(5)); \
137 LuaPushDatum(L, ret); \
140 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
143#define GLOBAL_SCRIPT_FUNC_X_1(TableName, FuncName, P0) \
144 static int ScriptFunc_##FuncName(lua_State* L) \
149 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
151#define GLOBAL_SCRIPT_FUNC_X_2(TableName, FuncName, P0, P1) \
152 static int ScriptFunc_##FuncName(lua_State* L) \
154 FuncName(P0(1), P1(2)); \
157 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
159#define GLOBAL_SCRIPT_FUNC_X_3(TableName, FuncName, P0, P1, P2) \
160 static int ScriptFunc_##FuncName(lua_State* L) \
162 FuncName(P0(1), P1(2), P2(3)); \
165 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
167#define GLOBAL_SCRIPT_FUNC_X_4(TableName, FuncName, P0, P1, P2, P3) \
168 static int ScriptFunc_##FuncName(lua_State* L) \
170 FuncName(P0(1), P1(2), P2(3), P3(4)); \
173 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
175#define GLOBAL_SCRIPT_FUNC_X_R(TableName, FuncName, RC) \
176 static int ScriptFunc_##FuncName(lua_State* L) \
178 Datum ret = RC FuncName(); \
179 LuaPushDatum(L, ret); \
182 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
184#define GLOBAL_SCRIPT_FUNC_X_R_1(TableName, FuncName, RC, P0) \
185 static int ScriptFunc_##FuncName(lua_State* L) \
187 Datum ret = RC FuncName(P0(1)); \
188 LuaPushDatum(L, ret); \
191 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
193#define GLOBAL_SCRIPT_FUNC_X_R_2(TableName, FuncName, RC, P0, P1) \
194 static int ScriptFunc_##FuncName(lua_State* L) \
196 Datum ret = RC FuncName(P0(1), P1(2)); \
197 LuaPushDatum(L, ret); \
200 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
202#define GLOBAL_SCRIPT_FUNC_X_R_3(TableName, FuncName, RC, P0, P1, P2) \
203 static int ScriptFunc_##FuncName(lua_State* L) \
205 Datum ret = RC FuncName(P0(1), P1(2), P2(3)); \
206 LuaPushDatum(L, ret); \
209 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
211#define GLOBAL_SCRIPT_FUNC_X_R_4(TableName, FuncName, RC, P0, P1, P2, P3) \
212 static int ScriptFunc_##FuncName(lua_State* L) \
214 Datum ret = RC FuncName(P0(1), P1(2), P2(3), P3(4)); \
215 LuaPushDatum(L, ret); \
218 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
222#define SCRIPT_FUNC(ClassName, FuncName) \
223 static int ScriptFunc_##FuncName(lua_State* L) \
225 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
226 object->FuncName(); \
229 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
231#define SCRIPT_FUNC_1(ClassName, FuncName) \
232 static int ScriptFunc_##FuncName(lua_State* L) \
234 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
235 Datum param0; LuaObjectToDatum(L, 2, param0); \
236 object->FuncName(param0); \
239 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
241#define SCRIPT_FUNC_2(ClassName, FuncName) \
242 static int ScriptFunc_##FuncName(lua_State* L) \
244 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
245 Datum param0; LuaObjectToDatum(L, 2, param0); \
246 Datum param1; LuaObjectToDatum(L, 3, param1); \
247 object->FuncName(param0, param1); \
250 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
252#define SCRIPT_FUNC_3(ClassName, FuncName) \
253 static int ScriptFunc_##FuncName(lua_State* L) \
255 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
256 Datum param0; LuaObjectToDatum(L, 2, param0); \
257 Datum param1; LuaObjectToDatum(L, 3, param1); \
258 Datum param2; LuaObjectToDatum(L, 4, param2); \
259 object->FuncName(param0, param1, param2); \
262 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
264#define SCRIPT_FUNC_4(ClassName, FuncName) \
265 static int ScriptFunc_##FuncName(lua_State* L) \
267 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
268 Datum param0; LuaObjectToDatum(L, 2, param0); \
269 Datum param1; LuaObjectToDatum(L, 3, param1); \
270 Datum param2; LuaObjectToDatum(L, 4, param2); \
271 Datum param3; LuaObjectToDatum(L, 5, param3); \
272 object->FuncName(param0, param1, param2, param3); \
275 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
277#define SCRIPT_FUNC_5(ClassName, FuncName) \
278 static int ScriptFunc_##FuncName(lua_State* L) \
280 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
281 Datum param0; LuaObjectToDatum(L, 2, param0); \
282 Datum param1; LuaObjectToDatum(L, 3, param1); \
283 Datum param2; LuaObjectToDatum(L, 4, param2); \
284 Datum param3; LuaObjectToDatum(L, 5, param3); \
285 Datum param4; LuaObjectToDatum(L, 6, param4); \
286 object->FuncName(param0, param1, param2, param3, param4); \
289 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
291#define SCRIPT_FUNC_6(ClassName, FuncName) \
292 static int ScriptFunc_##FuncName(lua_State* L) \
294 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
295 Datum param0; LuaObjectToDatum(L, 2, param0); \
296 Datum param1; LuaObjectToDatum(L, 3, param1); \
297 Datum param2; LuaObjectToDatum(L, 4, param2); \
298 Datum param3; LuaObjectToDatum(L, 5, param3); \
299 Datum param4; LuaObjectToDatum(L, 6, param4); \
300 Datum param5; LuaObjectToDatum(L, 7, param5); \
301 object->FuncName(param0, param1, param2, param3, param4, param5); \
304 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
306#define SCRIPT_FUNC_7(ClassName, FuncName) \
307 static int ScriptFunc_##FuncName(lua_State* L) \
309 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
310 Datum param0; LuaObjectToDatum(L, 2, param0); \
311 Datum param1; LuaObjectToDatum(L, 3, param1); \
312 Datum param2; LuaObjectToDatum(L, 4, param2); \
313 Datum param3; LuaObjectToDatum(L, 5, param3); \
314 Datum param4; LuaObjectToDatum(L, 6, param4); \
315 Datum param5; LuaObjectToDatum(L, 7, param5); \
316 Datum param6; LuaObjectToDatum(L, 8, param6); \
317 object->FuncName(param0, param1, param2, param3, param4, param5, param6); \
320 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
322#define SCRIPT_FUNC_8(ClassName, FuncName) \
323 static int ScriptFunc_##FuncName(lua_State* L) \
325 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
326 Datum param0; LuaObjectToDatum(L, 2, param0); \
327 Datum param1; LuaObjectToDatum(L, 3, param1); \
328 Datum param2; LuaObjectToDatum(L, 4, param2); \
329 Datum param3; LuaObjectToDatum(L, 5, param3); \
330 Datum param4; LuaObjectToDatum(L, 6, param4); \
331 Datum param5; LuaObjectToDatum(L, 7, param5); \
332 Datum param6; LuaObjectToDatum(L, 8, param6); \
333 Datum param7; LuaObjectToDatum(L, 9, param7); \
334 object->FuncName(param0, param1, param2, param3, param4, param5, param6, param7); \
337 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
339#define SCRIPT_FUNC_R(ClassName, FuncName) \
340 static int ScriptFunc_##FuncName(lua_State* L) \
342 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
343 Datum ret = object->FuncName(); \
344 LuaPushDatum(L, ret); \
347 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
349#define SCRIPT_FUNC_R_1(ClassName, FuncName) \
350 static int ScriptFunc_##FuncName(lua_State* L) \
352 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
353 Datum param0; LuaObjectToDatum(L, 2, param0); \
354 Datum ret = object->FuncName(param0); \
355 LuaPushDatum(L, ret); \
358 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
360#define SCRIPT_FUNC_R_2(ClassName, FuncName) \
361 static int ScriptFunc_##FuncName(lua_State* L) \
363 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
364 Datum param0; LuaObjectToDatum(L, 2, param0); \
365 Datum param1; LuaObjectToDatum(L, 3, param1); \
366 Datum ret = object->FuncName(param0, param1); \
367 LuaPushDatum(L, ret); \
370 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
372#define SCRIPT_FUNC_R_3(ClassName, FuncName) \
373 static int ScriptFunc_##FuncName(lua_State* L) \
375 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
376 Datum param0; LuaObjectToDatum(L, 2, param0); \
377 Datum param1; LuaObjectToDatum(L, 3, param1); \
378 Datum param2; LuaObjectToDatum(L, 4, param2); \
379 Datum ret = object->FuncName(param0, param1, param2); \
380 LuaPushDatum(L, ret); \
383 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
385#define SCRIPT_FUNC_R_4(ClassName, FuncName) \
386 static int ScriptFunc_##FuncName(lua_State* L) \
388 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
389 Datum param0; LuaObjectToDatum(L, 2, param0); \
390 Datum param1; LuaObjectToDatum(L, 3, param1); \
391 Datum param2; LuaObjectToDatum(L, 4, param2); \
392 Datum param3; LuaObjectToDatum(L, 5, param3); \
393 Datum ret = object->FuncName(param0, param1, param2, param3); \
394 LuaPushDatum(L, ret); \
397 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
399#define SCRIPT_FUNC_R_5(ClassName, FuncName) \
400 static int ScriptFunc_##FuncName(lua_State* L) \
402 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
403 Datum param0; LuaObjectToDatum(L, 2, param0); \
404 Datum param1; LuaObjectToDatum(L, 3, param1); \
405 Datum param2; LuaObjectToDatum(L, 4, param2); \
406 Datum param3; LuaObjectToDatum(L, 5, param3); \
407 Datum param4; LuaObjectToDatum(L, 6, param4); \
408 Datum ret = object->FuncName(param0, param1, param2, param3, param4); \
409 LuaPushDatum(L, ret); \
412 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
414#define SCRIPT_FUNC_R_6(ClassName, FuncName) \
415 static int ScriptFunc_##FuncName(lua_State* L) \
417 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
418 Datum param0; LuaObjectToDatum(L, 2, param0); \
419 Datum param1; LuaObjectToDatum(L, 3, param1); \
420 Datum param2; LuaObjectToDatum(L, 4, param2); \
421 Datum param3; LuaObjectToDatum(L, 5, param3); \
422 Datum param4; LuaObjectToDatum(L, 6, param4); \
423 Datum param5; LuaObjectToDatum(L, 7, param5); \
424 Datum ret = object->FuncName(param0, param1, param2, param3, param4, param5); \
425 LuaPushDatum(L, ret); \
428 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
430#define SCRIPT_FUNC_R_7(ClassName, FuncName) \
431 static int ScriptFunc_##FuncName(lua_State* L) \
433 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
434 Datum param0; LuaObjectToDatum(L, 2, param0); \
435 Datum param1; LuaObjectToDatum(L, 3, param1); \
436 Datum param2; LuaObjectToDatum(L, 4, param2); \
437 Datum param3; LuaObjectToDatum(L, 5, param3); \
438 Datum param4; LuaObjectToDatum(L, 6, param4); \
439 Datum param5; LuaObjectToDatum(L, 7, param5); \
440 Datum param6; LuaObjectToDatum(L, 8, param6); \
441 Datum ret = object->FuncName(param0, param1, param2, param3, param4, param5, param6); \
442 LuaPushDatum(L, ret); \
445 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
447#define SCRIPT_FUNC_R_8(ClassName, FuncName) \
448 static int ScriptFunc_##FuncName(lua_State* L) \
450 ClassName* object = SF_CHECK_OBJECT(L, 1)->As<ClassName>(); \
451 Datum param0; LuaObjectToDatum(L, 2, param0); \
452 Datum param1; LuaObjectToDatum(L, 3, param1); \
453 Datum param2; LuaObjectToDatum(L, 4, param2); \
454 Datum param3; LuaObjectToDatum(L, 5, param3); \
455 Datum param4; LuaObjectToDatum(L, 6, param4); \
456 Datum param5; LuaObjectToDatum(L, 7, param5); \
457 Datum param6; LuaObjectToDatum(L, 8, param6); \
458 Datum param7; LuaObjectToDatum(L, 9, param7); \
459 Datum ret = object->FuncName(param0, param1, param2, param3, param4, param5, param6, param7); \
460 LuaPushDatum(L, ret); \
463 static ScriptFuncAutoReg AutoReg_##FuncName(sAutoRegs_##ClassName, "", #FuncName, ScriptFunc_##FuncName);
470#define GLOBAL_SCRIPT_FUNC(TableName, FuncName) \
471 static int ScriptFunc_##FuncName(lua_State* L) \
476 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
478#define GLOBAL_SCRIPT_FUNC_1(TableName, FuncName) \
479 static int ScriptFunc_##FuncName(lua_State* L) \
481 Datum param0; LuaObjectToDatum(L, 1, param0); \
485 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
487#define GLOBAL_SCRIPT_FUNC_2(TableName, FuncName) \
488 static int ScriptFunc_##FuncName(lua_State* L) \
490 Datum param0; LuaObjectToDatum(L, 1, param0); \
491 Datum param1; LuaObjectToDatum(L, 2, param1); \
492 FuncName(param0, param1); \
495 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
497#define GLOBAL_SCRIPT_FUNC_3(TableName, FuncName) \
498 static int ScriptFunc_##FuncName(lua_State* L) \
500 Datum param0; LuaObjectToDatum(L, 1, param0); \
501 Datum param1; LuaObjectToDatum(L, 2, param1); \
502 Datum param2; LuaObjectToDatum(L, 3, param2); \
503 FuncName(param0, param1, param2); \
506 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
508#define GLOBAL_SCRIPT_FUNC_4(TableName, FuncName) \
509 static int ScriptFunc_##FuncName(lua_State* L) \
511 Datum param0; LuaObjectToDatum(L, 1, param0); \
512 Datum param1; LuaObjectToDatum(L, 2, param1); \
513 Datum param2; LuaObjectToDatum(L, 3, param2); \
514 Datum param3; LuaObjectToDatum(L, 4, param3); \
515 FuncName(param0, param1, param2, param3); \
518 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
520#define GLOBAL_SCRIPT_FUNC_5(TableName, FuncName) \
521 static int ScriptFunc_##FuncName(lua_State* L) \
523 Datum param0; LuaObjectToDatum(L, 1, param0); \
524 Datum param1; LuaObjectToDatum(L, 2, param1); \
525 Datum param2; LuaObjectToDatum(L, 3, param2); \
526 Datum param3; LuaObjectToDatum(L, 4, param3); \
527 Datum param4; LuaObjectToDatum(L, 5, param4); \
528 FuncName(param0, param1, param2, param3, param4); \
531 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
533#define GLOBAL_SCRIPT_FUNC_6(TableName, FuncName) \
534 static int ScriptFunc_##FuncName(lua_State* L) \
536 Datum param0; LuaObjectToDatum(L, 1, param0); \
537 Datum param1; LuaObjectToDatum(L, 2, param1); \
538 Datum param2; LuaObjectToDatum(L, 3, param2); \
539 Datum param3; LuaObjectToDatum(L, 4, param3); \
540 Datum param4; LuaObjectToDatum(L, 5, param4); \
541 Datum param5; LuaObjectToDatum(L, 6, param5); \
542 FuncName(param0, param1, param2, param3, param4, param5); \
545 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
547#define GLOBAL_SCRIPT_FUNC_7(TableName, FuncName) \
548 static int ScriptFunc_##FuncName(lua_State* L) \
550 Datum param0; LuaObjectToDatum(L, 1, param0); \
551 Datum param1; LuaObjectToDatum(L, 2, param1); \
552 Datum param2; LuaObjectToDatum(L, 3, param2); \
553 Datum param3; LuaObjectToDatum(L, 4, param3); \
554 Datum param4; LuaObjectToDatum(L, 5, param4); \
555 Datum param5; LuaObjectToDatum(L, 6, param5); \
556 Datum param6; LuaObjectToDatum(L, 7, param6); \
557 FuncName(param0, param1, param2, param3, param4, param5, param6); \
560 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
562#define GLOBAL_SCRIPT_FUNC_8(TableName, FuncName) \
563 static int ScriptFunc_##FuncName(lua_State* L) \
565 Datum param0; LuaObjectToDatum(L, 1, param0); \
566 Datum param1; LuaObjectToDatum(L, 2, param1); \
567 Datum param2; LuaObjectToDatum(L, 3, param2); \
568 Datum param3; LuaObjectToDatum(L, 4, param3); \
569 Datum param4; LuaObjectToDatum(L, 5, param4); \
570 Datum param5; LuaObjectToDatum(L, 6, param5); \
571 Datum param6; LuaObjectToDatum(L, 7, param6); \
572 Datum param7; LuaObjectToDatum(L, 8, param7); \
573 FuncName(param0, param1, param2, param3, param4, param5, param6, param7); \
576 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
578#define GLOBAL_SCRIPT_FUNC_R(TableName, FuncName) \
579 static int ScriptFunc_##FuncName(lua_State* L) \
581 Datum ret = FuncName(); \
582 LuaPushDatum(L, ret); \
585 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
587#define GLOBAL_SCRIPT_FUNC_R_1(TableName, FuncName) \
588 static int ScriptFunc_##FuncName(lua_State* L) \
590 Datum param0; LuaObjectToDatum(L, 1, param0); \
591 Datum ret = FuncName(param0); \
592 LuaPushDatum(L, ret); \
595 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
597#define GLOBAL_SCRIPT_FUNC_R_2(TableName, FuncName) \
598 static int ScriptFunc_##FuncName(lua_State* L) \
600 Datum param0; LuaObjectToDatum(L, 1, param0); \
601 Datum param1; LuaObjectToDatum(L, 2, param1); \
602 Datum ret = FuncName(param0, param1); \
603 LuaPushDatum(L, ret); \
606 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
608#define GLOBAL_SCRIPT_FUNC_R_3(TableName, FuncName) \
609 static int ScriptFunc_##FuncName(lua_State* L) \
611 Datum param0; LuaObjectToDatum(L, 1, param0); \
612 Datum param1; LuaObjectToDatum(L, 2, param1); \
613 Datum param2; LuaObjectToDatum(L, 3, param2); \
614 Datum ret = FuncName(param0, param1, param2); \
615 LuaPushDatum(L, ret); \
618 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
620#define GLOBAL_SCRIPT_FUNC_R_4(TableName, FuncName) \
621 static int ScriptFunc_##FuncName(lua_State* L) \
623 Datum param0; LuaObjectToDatum(L, 1, param0); \
624 Datum param1; LuaObjectToDatum(L, 2, param1); \
625 Datum param2; LuaObjectToDatum(L, 3, param2); \
626 Datum param3; LuaObjectToDatum(L, 4, param3); \
627 Datum ret = FuncName(param0, param1, param2, param3); \
628 LuaPushDatum(L, ret); \
631 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
633#define GLOBAL_SCRIPT_FUNC_R_5(TableName, FuncName) \
634 static int ScriptFunc_##FuncName(lua_State* L) \
636 Datum param0; LuaObjectToDatum(L, 1, param0); \
637 Datum param1; LuaObjectToDatum(L, 2, param1); \
638 Datum param2; LuaObjectToDatum(L, 3, param2); \
639 Datum param3; LuaObjectToDatum(L, 4, param3); \
640 Datum param4; LuaObjectToDatum(L, 5, param4); \
641 Datum ret = FuncName(param0, param1, param2, param3, param4); \
642 LuaPushDatum(L, ret); \
645 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
647#define GLOBAL_SCRIPT_FUNC_R_6(TableName, FuncName) \
648 static int ScriptFunc_##FuncName(lua_State* L) \
650 Datum param0; LuaObjectToDatum(L, 1, param0); \
651 Datum param1; LuaObjectToDatum(L, 2, param1); \
652 Datum param2; LuaObjectToDatum(L, 3, param2); \
653 Datum param3; LuaObjectToDatum(L, 4, param3); \
654 Datum param4; LuaObjectToDatum(L, 5, param4); \
655 Datum param5; LuaObjectToDatum(L, 6, param5); \
656 Datum ret = FuncName(param0, param1, param2, param3, param4, param5); \
657 LuaPushDatum(L, ret); \
660 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
662#define GLOBAL_SCRIPT_FUNC_R_7(TableName, FuncName) \
663 static int ScriptFunc_##FuncName(lua_State* L) \
665 Datum param0; LuaObjectToDatum(L, 1, param0); \
666 Datum param1; LuaObjectToDatum(L, 2, param1); \
667 Datum param2; LuaObjectToDatum(L, 3, param2); \
668 Datum param3; LuaObjectToDatum(L, 4, param3); \
669 Datum param4; LuaObjectToDatum(L, 5, param4); \
670 Datum param5; LuaObjectToDatum(L, 6, param5); \
671 Datum param6; LuaObjectToDatum(L, 7, param6); \
672 Datum ret = FuncName(param0, param1, param2, param3, param4, param5, param6); \
673 LuaPushDatum(L, ret); \
676 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
678#define GLOBAL_SCRIPT_FUNC_R_8(TableName, FuncName) \
679 static int ScriptFunc_##FuncName(lua_State* L) \
681 Datum param0; LuaObjectToDatum(L, 1, param0); \
682 Datum param1; LuaObjectToDatum(L, 2, param1); \
683 Datum param2; LuaObjectToDatum(L, 3, param2); \
684 Datum param3; LuaObjectToDatum(L, 4, param3); \
685 Datum param4; LuaObjectToDatum(L, 5, param4); \
686 Datum param5; LuaObjectToDatum(L, 6, param5); \
687 Datum param6; LuaObjectToDatum(L, 7, param6); \
688 Datum param7; LuaObjectToDatum(L, 8, param7); \
689 Datum ret = FuncName(param0, param1, param2, param3, param4, param5, param6, param7); \
690 LuaPushDatum(L, ret); \
693 static ScriptFuncAutoReg AutoReg_##FuncName(GetGlobalAutoRegArray(), TableName, #FuncName, ScriptFunc_##FuncName);
696#define OSF(ClassName, FuncName) SCRIPT_FUNC(ClassName, FuncName)
697#define OSF_1(ClassName, FuncName) SCRIPT_FUNC_1(ClassName, FuncName)
698#define OSF_2(ClassName, FuncName) SCRIPT_FUNC_2(ClassName, FuncName)
699#define OSF_3(ClassName, FuncName) SCRIPT_FUNC_3(ClassName, FuncName)
700#define OSF_4(ClassName, FuncName) SCRIPT_FUNC_4(ClassName, FuncName)
701#define OSF_5(ClassName, FuncName) SCRIPT_FUNC_5(ClassName, FuncName)
702#define OSF_6(ClassName, FuncName) SCRIPT_FUNC_6(ClassName, FuncName)
703#define OSF_7(ClassName, FuncName) SCRIPT_FUNC_7(ClassName, FuncName)
704#define OSF_8(ClassName, FuncName) SCRIPT_FUNC_8(ClassName, FuncName)
705#define OSF_R(ClassName, FuncName) SCRIPT_FUNC_R(ClassName, FuncName)
706#define OSF_R_1(ClassName, FuncName) SCRIPT_FUNC_R_1(ClassName, FuncName)
707#define OSF_R_2(ClassName, FuncName) SCRIPT_FUNC_R_2(ClassName, FuncName)
708#define OSF_R_3(ClassName, FuncName) SCRIPT_FUNC_R_3(ClassName, FuncName)
709#define OSF_R_4(ClassName, FuncName) SCRIPT_FUNC_R_4(ClassName, FuncName)
710#define OSF_R_5(ClassName, FuncName) SCRIPT_FUNC_R_5(ClassName, FuncName)
711#define OSF_R_6(ClassName, FuncName) SCRIPT_FUNC_R_6(ClassName, FuncName)
712#define OSF_R_7(ClassName, FuncName) SCRIPT_FUNC_R_7(ClassName, FuncName)
713#define OSF_R_8(ClassName, FuncName) SCRIPT_FUNC_R_8(ClassName, FuncName)
715#define TSF(TableName, FuncName) GLOBAL_SCRIPT_FUNC(TableName, FuncName)
716#define TSF_1(TableName, FuncName) GLOBAL_SCRIPT_FUNC_1(TableName, FuncName)
717#define TSF_2(TableName, FuncName) GLOBAL_SCRIPT_FUNC_2(TableName, FuncName)
718#define TSF_3(TableName, FuncName) GLOBAL_SCRIPT_FUNC_3(TableName, FuncName)
719#define TSF_4(TableName, FuncName) GLOBAL_SCRIPT_FUNC_4(TableName, FuncName)
720#define TSF_5(TableName, FuncName) GLOBAL_SCRIPT_FUNC_5(TableName, FuncName)
721#define TSF_6(TableName, FuncName) GLOBAL_SCRIPT_FUNC_6(TableName, FuncName)
722#define TSF_7(TableName, FuncName) GLOBAL_SCRIPT_FUNC_7(TableName, FuncName)
723#define TSF_8(TableName, FuncName) GLOBAL_SCRIPT_FUNC_8(TableName, FuncName)
724#define TSF_R(TableName, FuncName) GLOBAL_SCRIPT_FUNC_R(TableName, FuncName)
725#define TSF_R_1(TableName, FuncName) GLOBAL_SCRIPT_FUNC_R_1(TableName, FuncName)
726#define TSF_R_2(TableName, FuncName) GLOBAL_SCRIPT_FUNC_R_2(TableName, FuncName)
727#define TSF_R_3(TableName, FuncName) GLOBAL_SCRIPT_FUNC_R_3(TableName, FuncName)
728#define TSF_R_4(TableName, FuncName) GLOBAL_SCRIPT_FUNC_R_4(TableName, FuncName)
729#define TSF_R_5(TableName, FuncName) GLOBAL_SCRIPT_FUNC_R_5(TableName, FuncName)
730#define TSF_R_6(TableName, FuncName) GLOBAL_SCRIPT_FUNC_R_6(TableName, FuncName)
731#define TSF_R_7(TableName, FuncName) GLOBAL_SCRIPT_FUNC_R_7(TableName, FuncName)
732#define TSF_R_8(TableName, FuncName) GLOBAL_SCRIPT_FUNC_R_8(TableName, FuncName)
734#define GSF(FuncName) GLOBAL_SCRIPT_FUNC("", FuncName)
735#define GSF_1(FuncName) GLOBAL_SCRIPT_FUNC_1("", FuncName)
736#define GSF_2(FuncName) GLOBAL_SCRIPT_FUNC_2("", FuncName)
737#define GSF_3(FuncName) GLOBAL_SCRIPT_FUNC_3("", FuncName)
738#define GSF_4(FuncName) GLOBAL_SCRIPT_FUNC_4("", FuncName)
739#define GSF_5(FuncName) GLOBAL_SCRIPT_FUNC_5("", FuncName)
740#define GSF_6(FuncName) GLOBAL_SCRIPT_FUNC_6("", FuncName)
741#define GSF_7(FuncName) GLOBAL_SCRIPT_FUNC_7("", FuncName)
742#define GSF_8(FuncName) GLOBAL_SCRIPT_FUNC_8("", FuncName)
743#define GSF_R(FuncName) GLOBAL_SCRIPT_FUNC_R("", FuncName)
744#define GSF_R_1(FuncName) GLOBAL_SCRIPT_FUNC_R_1("", FuncName)
745#define GSF_R_2(FuncName) GLOBAL_SCRIPT_FUNC_R_2("", FuncName)
746#define GSF_R_3(FuncName) GLOBAL_SCRIPT_FUNC_R_3("", FuncName)
747#define GSF_R_4(FuncName) GLOBAL_SCRIPT_FUNC_R_4("", FuncName)
748#define GSF_R_5(FuncName) GLOBAL_SCRIPT_FUNC_R_5("", FuncName)
749#define GSF_R_6(FuncName) GLOBAL_SCRIPT_FUNC_R_6("", FuncName)
750#define GSF_R_7(FuncName) GLOBAL_SCRIPT_FUNC_R_7("", FuncName)
751#define GSF_R_8(FuncName) GLOBAL_SCRIPT_FUNC_R_8("", FuncName)
754#define OSFX_1(ClassName, FuncName, P0) SCRIPT_FUNC_X_1(ClassName, FuncName, P0)
755#define OSFX_2(ClassName, FuncName, P0, P1) SCRIPT_FUNC_X_2(ClassName, FuncName, P0, P1)
756#define OSFX_3(ClassName, FuncName, P0, P1, P2) SCRIPT_FUNC_X_3(ClassName, FuncName, P0, P1, P2)
757#define OSFX_4(ClassName, FuncName, P0, P1, P2, P3) SCRIPT_FUNC_X_4(ClassName, FuncName, P0, P1, P2, P3)
758#define OSFX_5(ClassName, FuncName, P0, P1, P2, P3, P4) SCRIPT_FUNC_X_5(ClassName, FuncName, P0, P1, P2, P3, P4)
759#define OSFX_R(ClassName, FuncName, RC) SCRIPT_FUNC_X_R(ClassName, FuncName, RC)
760#define OSFX_R_1(ClassName, FuncName, RC, P0) SCRIPT_FUNC_X_R_1(ClassName, FuncName, RC, P0)
761#define OSFX_R_2(ClassName, FuncName, RC, P0, P1) SCRIPT_FUNC_X_R_2(ClassName, FuncName, RC, P0, P1)
762#define OSFX_R_3(ClassName, FuncName, RC, P0, P1, P2) SCRIPT_FUNC_X_R_3(ClassName, FuncName, RC, P0, P1, P2)
763#define OSFX_R_4(ClassName, FuncName, RC, P0, P1, P2, P3) SCRIPT_FUNC_X_R_4(ClassName, FuncName, RC, P0, P1, P2, P3)
766#define TSFX_1(TableName, FuncName, P0) GLOBAL_SCRIPT_FUNC_X_1(TableName, FuncName, P0)
767#define TSFX_2(TableName, FuncName, P0, P1) GLOBAL_SCRIPT_FUNC_X_2(TableName, FuncName, P0, P1)
768#define TSFX_3(TableName, FuncName, P0, P1, P2) GLOBAL_SCRIPT_FUNC_X_3(TableName, FuncName, P0, P1, P2)
769#define TSFX_4(TableName, FuncName, P0, P1, P2, P3) GLOBAL_SCRIPT_FUNC_X_4(TableName, FuncName, P0, P1, P2, P3)
770#define TSFX_R(TableName, FuncName, RC) GLOBAL_SCRIPT_FUNC_X_R(TableName, FuncName, RC)
771#define TSFX_R_1(TableName, FuncName, RC, P0) GLOBAL_SCRIPT_FUNC_X_R_1(TableName, FuncName, RC, P0)
772#define TSFX_R_2(TableName, FuncName, RC, P0, P1) GLOBAL_SCRIPT_FUNC_X_R_2(TableName, FuncName, RC, P0, P1)
773#define TSFX_R_3(TableName, FuncName, RC, P0, P1, P2) GLOBAL_SCRIPT_FUNC_X_R_3(TableName, FuncName, RC, P0, P1, P2)
774#define TSFX_R_4(TableName, FuncName, RC, P0, P1, P2, P3) GLOBAL_SCRIPT_FUNC_X_R_4(TableName, FuncName, RC, P0, P1, P2, P3)
776#define GSFX_1(FuncName, P0) GLOBAL_SCRIPT_FUNC_X_1("", FuncName, P0)
777#define GSFX_2(FuncName, P0, P1) GLOBAL_SCRIPT_FUNC_X_2("", FuncName, P0, P1)
778#define GSFX_3(FuncName, P0, P1, P2) GLOBAL_SCRIPT_FUNC_X_3("", FuncName, P0, P1, P2)
779#define GSFX_4(FuncName, P0, P1, P2, P3) GLOBAL_SCRIPT_FUNC_X_4("", FuncName, P0, P1, P2, P3)
780#define GSFX_R(FuncName, RC) GLOBAL_SCRIPT_FUNC_X_R("", FuncName, RC)
781#define GSFX_R_1(FuncName, RC, P0) GLOBAL_SCRIPT_FUNC_X_R_1("", FuncName, RC, P0)
782#define GSFX_R_2(FuncName, RC, P0, P1) GLOBAL_SCRIPT_FUNC_X_R_2("", FuncName, RC, P0, P1)
783#define GSFX_R_3(FuncName, RC, P0, P1, P2) GLOBAL_SCRIPT_FUNC_X_R_3("", FuncName, RC, P0, P1, P2)
784#define GSFX_R_4(FuncName, RC, P0, P1, P2, P3) GLOBAL_SCRIPT_FUNC_X_R_4("", FuncName, RC, P0, P1, P2, P3)