forked from isovector/adventure
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlua.h
84 lines (71 loc) · 3.73 KB
/
lua.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#ifndef ADVENTURE_LUA_H
#define ADVENTURE_LUA_H
#include "adventure.h"
#define LUA_PUSHPOS(x, y) lua_newtable(script); \
lua_pushstring(script, "x"); \
lua_pushnumber(script, x); \
lua_settable(script, -3); \
lua_pushstring(script, "y"); \
lua_pushnumber(script, y); \
lua_settable(script, -3);
extern lua_State *script;
void init_script();
POINT *actor_position();
#define lua_getregister(L,s) lua_getfield(L, LUA_REGISTRYINDEX, s)
#define lua_setregister(L,s) lua_setfield(L, LUA_REGISTRYINDEX, s)
#define NTHARG11(n, arg, args ...) arg
#define NTHARG12(n, arg, args ...) NTHARG2##n(n, args)
#define NTHARG13(n, arg, args ...) NTHARG2##n(n, args)
#define NTHARG14(n, arg, args ...) NTHARG2##n(n, args)
#define NTHARG15(n, arg, args ...) NTHARG2##n(n, args)
#define NTHARG21(n, arg, args ...) NTHARG3##n(n, args)
#define NTHARG22(n, arg, args ...) arg
#define NTHARG23(n, arg, args ...) NTHARG3##n(n, args)
#define NTHARG24(n, arg, args ...) NTHARG3##n(n, args)
#define NTHARG25(n, arg, args ...) NTHARG3##n(n, args)
#define NTHARG31(n, arg, args ...) NTHARG4##n(n, args)
#define NTHARG32(n, arg, args ...) NTHARG4##n(n, args)
#define NTHARG33(n, arg, args ...) arg
#define NTHARG34(n, arg, args ...) NTHARG4##n(n, args)
#define NTHARG35(n, arg, args ...) NTHARG4##n(n, args)
#define NTHARG41(n, arg, args ...) NTHARG5##n(n, args)
#define NTHARG42(n, arg, args ...) NTHARG5##n(n, args)
#define NTHARG43(n, arg, args ...) NTHARG5##n(n, args)
#define NTHARG44(n, arg, args ...) arg
#define NTHARG45(n, arg, args ...) NTHARG5##n(n, args)
#define NTHARG51(n, arg)
#define NTHARG52(n, arg)
#define NTHARG53(n, arg)
#define NTHARG54(n, arg)
#define NTHARG55(n, arg) arg
#define NTHARG(n, args ...) NTHARG1##n(n, args)
#define LUA_CHECKARG1(type, args ...) LUA_CHECKARG1_(type, args)
#define LUA_CHECKARG2(type, args ...) LUA_CHECKARG2_(type, args)
#define LUA_CHECKARG3(type, args ...) LUA_CHECKARG3_(type, args)
#define LUA_CHECKARG4(type, args ...) LUA_CHECKARG4_(type, args)
#define LUA_CHECKARG5(type, args ...) LUA_CHECKARG5_(type, args)
#define LUA_CHECKARG1_(type, args ...) || !lua_is##type(L, 1)
#define LUA_CHECKARG2_(type, args ...) || !lua_is##type(L, 2) LUA_CHECKARG1(NTHARG(1, args), args)
#define LUA_CHECKARG3_(type, args ...) || !lua_is##type(L, 3) LUA_CHECKARG2(NTHARG(2, args), args)
#define LUA_CHECKARG4_(type, args ...) || !lua_is##type(L, 4) LUA_CHECKARG3(NTHARG(3, args), args)
#define LUA_CHECKARG5_(type, args ...) || !lua_is##type(L, 5) LUA_CHECKARG4(NTHARG(4, args), args)
#define LUA_GETARG1(type, args ...) LUA_GETARG1_(type, args)
#define LUA_GETARG2(type, args ...) LUA_GETARG2_(type, args)
#define LUA_GETARG3(type, args ...) LUA_GETARG3_(type, args)
#define LUA_GETARG4(type, args ...) LUA_GETARG4_(type, args)
#define LUA_GETARG5(type, args ...) LUA_GETARG5_(type, args)
#define LUA_GETARG1_(type, args ...) lua_to##type(script, 1)
#define LUA_GETARG2_(type, args ...) LUA_GETARG1(NTHARG(1, args), args), lua_to##type(script, 2)
#define LUA_GETARG3_(type, args ...) LUA_GETARG2(NTHARG(2, args), args), lua_to##type(script, 3)
#define LUA_GETARG4_(type, args ...) LUA_GETARG3(NTHARG(3, args), args), lua_to##type(script, 4)
#define LUA_GETARG5_(type, args ...) LUA_GETARG4(NTHARG(4, args), args), lua_to##type(script, 5)
#define LUA_WRAP(name, narg, type, args ...) \
int lua_##name (lua_State *L) { \
if (lua_gettop(L) != narg LUA_CHECKARG##narg(NTHARG(narg, args), args)) { \
lua_pushstring(L, #name " expects (" ")"); \
lua_error(L);\
} \
lua_push##type(script, name(LUA_GETARG##narg(NTHARG(narg, args), args)));\
return 1; \
}
#endif