diff options
Diffstat (limited to 'src/lauxlib.h')
-rw-r--r-- | src/lauxlib.h | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/src/lauxlib.h b/src/lauxlib.h new file mode 100644 index 00000000..505a9f52 --- /dev/null +++ b/src/lauxlib.h | |||
@@ -0,0 +1,159 @@ | |||
1 | /* | ||
2 | ** $Id: lauxlib.h,v 1.88.1.1 2007/12/27 13:02:25 roberto Exp $ | ||
3 | ** Auxiliary functions for building Lua libraries | ||
4 | ** See Copyright Notice in lua.h | ||
5 | */ | ||
6 | |||
7 | |||
8 | #ifndef lauxlib_h | ||
9 | #define lauxlib_h | ||
10 | |||
11 | |||
12 | #include <stddef.h> | ||
13 | #include <stdio.h> | ||
14 | |||
15 | #include "lua.h" | ||
16 | |||
17 | |||
18 | #define luaL_getn(L,i) ((int)lua_objlen(L, i)) | ||
19 | #define luaL_setn(L,i,j) ((void)0) /* no op! */ | ||
20 | |||
21 | /* extra error code for `luaL_load' */ | ||
22 | #define LUA_ERRFILE (LUA_ERRERR+1) | ||
23 | |||
24 | typedef struct luaL_Reg { | ||
25 | const char *name; | ||
26 | lua_CFunction func; | ||
27 | } luaL_Reg; | ||
28 | |||
29 | LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname, | ||
30 | const luaL_Reg *l, int nup); | ||
31 | LUALIB_API void (luaL_register) (lua_State *L, const char *libname, | ||
32 | const luaL_Reg *l); | ||
33 | LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); | ||
34 | LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); | ||
35 | LUALIB_API int (luaL_typerror) (lua_State *L, int narg, const char *tname); | ||
36 | LUALIB_API int (luaL_argerror) (lua_State *L, int numarg, const char *extramsg); | ||
37 | LUALIB_API const char *(luaL_checklstring) (lua_State *L, int numArg, | ||
38 | size_t *l); | ||
39 | LUALIB_API const char *(luaL_optlstring) (lua_State *L, int numArg, | ||
40 | const char *def, size_t *l); | ||
41 | LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int numArg); | ||
42 | LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def); | ||
43 | |||
44 | LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg); | ||
45 | LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg, | ||
46 | lua_Integer def); | ||
47 | |||
48 | LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); | ||
49 | LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t); | ||
50 | LUALIB_API void (luaL_checkany) (lua_State *L, int narg); | ||
51 | |||
52 | LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname); | ||
53 | LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname); | ||
54 | |||
55 | LUALIB_API void (luaL_where) (lua_State *L, int lvl); | ||
56 | LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...); | ||
57 | |||
58 | LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def, | ||
59 | const char *const lst[]); | ||
60 | |||
61 | LUALIB_API int (luaL_ref) (lua_State *L, int t); | ||
62 | LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref); | ||
63 | |||
64 | LUALIB_API int (luaL_loadfile) (lua_State *L, const char *filename); | ||
65 | LUALIB_API int (luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, | ||
66 | const char *name); | ||
67 | LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); | ||
68 | |||
69 | LUALIB_API lua_State *(luaL_newstate) (void); | ||
70 | |||
71 | |||
72 | LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p, | ||
73 | const char *r); | ||
74 | |||
75 | LUALIB_API const char *(luaL_findtable) (lua_State *L, int idx, | ||
76 | const char *fname, int szhint); | ||
77 | |||
78 | |||
79 | |||
80 | |||
81 | /* | ||
82 | ** =============================================================== | ||
83 | ** some useful macros | ||
84 | ** =============================================================== | ||
85 | */ | ||
86 | |||
87 | #define luaL_argcheck(L, cond,numarg,extramsg) \ | ||
88 | ((void)((cond) || luaL_argerror(L, (numarg), (extramsg)))) | ||
89 | #define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) | ||
90 | #define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) | ||
91 | #define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n))) | ||
92 | #define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d))) | ||
93 | #define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n))) | ||
94 | #define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) | ||
95 | |||
96 | #define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) | ||
97 | |||
98 | #define luaL_dofile(L, fn) \ | ||
99 | (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0)) | ||
100 | |||
101 | #define luaL_dostring(L, s) \ | ||
102 | (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0)) | ||
103 | |||
104 | #define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n))) | ||
105 | |||
106 | #define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) | ||
107 | |||
108 | /* | ||
109 | ** {====================================================== | ||
110 | ** Generic Buffer manipulation | ||
111 | ** ======================================================= | ||
112 | */ | ||
113 | |||
114 | |||
115 | |||
116 | typedef struct luaL_Buffer { | ||
117 | char *p; /* current position in buffer */ | ||
118 | int lvl; /* number of strings in the stack (level) */ | ||
119 | lua_State *L; | ||
120 | char buffer[LUAL_BUFFERSIZE]; | ||
121 | } luaL_Buffer; | ||
122 | |||
123 | #define luaL_addchar(B,c) \ | ||
124 | ((void)((B)->p < ((B)->buffer+LUAL_BUFFERSIZE) || luaL_prepbuffer(B)), \ | ||
125 | (*(B)->p++ = (char)(c))) | ||
126 | |||
127 | /* compatibility only */ | ||
128 | #define luaL_putchar(B,c) luaL_addchar(B,c) | ||
129 | |||
130 | #define luaL_addsize(B,n) ((B)->p += (n)) | ||
131 | |||
132 | LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B); | ||
133 | LUALIB_API char *(luaL_prepbuffer) (luaL_Buffer *B); | ||
134 | LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); | ||
135 | LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s); | ||
136 | LUALIB_API void (luaL_addvalue) (luaL_Buffer *B); | ||
137 | LUALIB_API void (luaL_pushresult) (luaL_Buffer *B); | ||
138 | |||
139 | |||
140 | /* }====================================================== */ | ||
141 | |||
142 | |||
143 | /* compatibility with ref system */ | ||
144 | |||
145 | /* pre-defined references */ | ||
146 | #define LUA_NOREF (-2) | ||
147 | #define LUA_REFNIL (-1) | ||
148 | |||
149 | #define lua_ref(L,lock) ((lock) ? luaL_ref(L, LUA_REGISTRYINDEX) : \ | ||
150 | (lua_pushstring(L, "unlocked references are obsolete"), lua_error(L), 0)) | ||
151 | |||
152 | #define lua_unref(L,ref) luaL_unref(L, LUA_REGISTRYINDEX, (ref)) | ||
153 | |||
154 | #define lua_getref(L,ref) lua_rawgeti(L, LUA_REGISTRYINDEX, (ref)) | ||
155 | |||
156 | |||
157 | #define luaL_reg luaL_Reg | ||
158 | |||
159 | #endif | ||