root / lab4 / .minix-src / include / lauxlib.h @ 14
History | View | Annotate | Download (8.58 KB)
1 |
/* $NetBSD: lauxlib.h,v 1.3 2015/02/02 14:03:05 lneto Exp $ */
|
---|---|
2 |
|
3 |
/*
|
4 |
** Id: lauxlib.h,v 1.128 2014/10/29 16:11:17 roberto Exp
|
5 |
** Auxiliary functions for building Lua libraries
|
6 |
** See Copyright Notice in lua.h
|
7 |
*/
|
8 |
|
9 |
|
10 |
#ifndef lauxlib_h
|
11 |
#define lauxlib_h
|
12 |
|
13 |
|
14 |
#ifndef _KERNEL
|
15 |
#include <stddef.h> |
16 |
#include <stdio.h> |
17 |
#endif
|
18 |
|
19 |
#include "lua.h" |
20 |
|
21 |
|
22 |
|
23 |
/* extra error code for 'luaL_load' */
|
24 |
#define LUA_ERRFILE (LUA_ERRERR+1) |
25 |
|
26 |
|
27 |
typedef struct luaL_Reg { |
28 |
const char *name; |
29 |
lua_CFunction func; |
30 |
} luaL_Reg; |
31 |
|
32 |
|
33 |
#define LUAL_NUMSIZES (sizeof(lua_Integer)*16 + sizeof(lua_Number)) |
34 |
|
35 |
LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver, size_t sz);
|
36 |
#define luaL_checkversion(L) \
|
37 |
luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES) |
38 |
|
39 |
LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); |
40 |
LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); |
41 |
LUALIB_API const char *(luaL_tolstring) (lua_State *L, int idx, size_t *len); |
42 |
LUALIB_API int (luaL_argerror) (lua_State *L, int arg, const char *extramsg); |
43 |
LUALIB_API const char *(luaL_checklstring) (lua_State *L, int arg, |
44 |
size_t *l); |
45 |
LUALIB_API const char *(luaL_optlstring) (lua_State *L, int arg, |
46 |
const char *def, size_t *l); |
47 |
LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int arg);
|
48 |
LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int arg, lua_Number def);
|
49 |
|
50 |
#ifndef _KERNEL
|
51 |
LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int arg);
|
52 |
LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int arg,
|
53 |
lua_Integer def); |
54 |
#else /* _KERNEL */ |
55 |
#define luaL_checkinteger luaL_checknumber
|
56 |
#define luaL_optinteger(L,a,d) luaL_optnumber(L, (a), (lua_Number)(d))
|
57 |
#endif
|
58 |
|
59 |
LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); |
60 |
LUALIB_API void (luaL_checktype) (lua_State *L, int arg, int t); |
61 |
LUALIB_API void (luaL_checkany) (lua_State *L, int arg); |
62 |
|
63 |
LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname); |
64 |
LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname); |
65 |
LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname); |
66 |
LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname); |
67 |
|
68 |
LUALIB_API void (luaL_where) (lua_State *L, int lvl); |
69 |
LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...); |
70 |
|
71 |
LUALIB_API int (luaL_checkoption) (lua_State *L, int arg, const char *def, |
72 |
const char *const lst[]); |
73 |
|
74 |
#ifndef _KERNEL
|
75 |
LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname); |
76 |
LUALIB_API int (luaL_execresult) (lua_State *L, int stat); |
77 |
#endif
|
78 |
|
79 |
/* pre-defined references */
|
80 |
#define LUA_NOREF (-2) |
81 |
#define LUA_REFNIL (-1) |
82 |
|
83 |
LUALIB_API int (luaL_ref) (lua_State *L, int t); |
84 |
LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref); |
85 |
|
86 |
#ifndef _KERNEL
|
87 |
LUALIB_API int (luaL_loadfilex) (lua_State *L, const char *filename, |
88 |
const char *mode); |
89 |
|
90 |
#define luaL_loadfile(L,f) luaL_loadfilex(L,f,NULL) |
91 |
#endif
|
92 |
|
93 |
LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, |
94 |
const char *name, const char *mode); |
95 |
LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); |
96 |
|
97 |
LUALIB_API lua_State *(luaL_newstate) (void);
|
98 |
|
99 |
LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx);
|
100 |
|
101 |
LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p, |
102 |
const char *r); |
103 |
|
104 |
LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup); |
105 |
|
106 |
LUALIB_API int (luaL_getsubtable) (lua_State *L, int idx, const char *fname); |
107 |
|
108 |
LUALIB_API void (luaL_traceback) (lua_State *L, lua_State *L1,
|
109 |
const char *msg, int level); |
110 |
|
111 |
LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname, |
112 |
lua_CFunction openf, int glb);
|
113 |
|
114 |
/*
|
115 |
** ===============================================================
|
116 |
** some useful macros
|
117 |
** ===============================================================
|
118 |
*/
|
119 |
|
120 |
|
121 |
#define luaL_newlibtable(L,l) \
|
122 |
lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1) |
123 |
|
124 |
#define luaL_newlib(L,l) \
|
125 |
(luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))
|
126 |
|
127 |
#define luaL_argcheck(L, cond,arg,extramsg) \
|
128 |
((void)((cond) || luaL_argerror(L, (arg), (extramsg))))
|
129 |
#define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) |
130 |
#define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) |
131 |
|
132 |
#define luaL_typename(L,i) lua_typename(L, lua_type(L,(i)))
|
133 |
|
134 |
#ifndef _KERNEL
|
135 |
#define luaL_dofile(L, fn) \
|
136 |
(luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0)) |
137 |
#endif
|
138 |
|
139 |
#define luaL_dostring(L, s) \
|
140 |
(luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0)) |
141 |
|
142 |
#define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n)))
|
143 |
|
144 |
#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
|
145 |
|
146 |
#define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL) |
147 |
|
148 |
|
149 |
/*
|
150 |
** {======================================================
|
151 |
** Generic Buffer manipulation
|
152 |
** =======================================================
|
153 |
*/
|
154 |
|
155 |
typedef struct luaL_Buffer { |
156 |
char *b; /* buffer address */ |
157 |
size_t size; /* buffer size */
|
158 |
size_t n; /* number of characters in buffer */
|
159 |
lua_State *L; |
160 |
char initb[LUAL_BUFFERSIZE]; /* initial buffer */ |
161 |
} luaL_Buffer; |
162 |
|
163 |
|
164 |
#define luaL_addchar(B,c) \
|
165 |
((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \ |
166 |
((B)->b[(B)->n++] = (c))) |
167 |
|
168 |
#define luaL_addsize(B,s) ((B)->n += (s))
|
169 |
|
170 |
LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);
|
171 |
LUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz);
|
172 |
LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); |
173 |
LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s); |
174 |
LUALIB_API void (luaL_addvalue) (luaL_Buffer *B);
|
175 |
LUALIB_API void (luaL_pushresult) (luaL_Buffer *B);
|
176 |
LUALIB_API void (luaL_pushresultsize) (luaL_Buffer *B, size_t sz);
|
177 |
LUALIB_API char *(luaL_buffinitsize) (lua_State *L, luaL_Buffer *B, size_t sz);
|
178 |
|
179 |
#define luaL_prepbuffer(B) luaL_prepbuffsize(B, LUAL_BUFFERSIZE)
|
180 |
|
181 |
/* }====================================================== */
|
182 |
|
183 |
|
184 |
|
185 |
#ifndef _KERNEL
|
186 |
/*
|
187 |
** {======================================================
|
188 |
** File handles for IO library
|
189 |
** =======================================================
|
190 |
*/
|
191 |
|
192 |
/*
|
193 |
** A file handle is a userdata with metatable 'LUA_FILEHANDLE' and
|
194 |
** initial structure 'luaL_Stream' (it may contain other fields
|
195 |
** after that initial structure).
|
196 |
*/
|
197 |
|
198 |
#define LUA_FILEHANDLE "FILE*" |
199 |
|
200 |
|
201 |
typedef struct luaL_Stream { |
202 |
FILE *f; /* stream (NULL for incompletely created streams) */
|
203 |
lua_CFunction closef; /* to close stream (NULL for closed streams) */
|
204 |
} luaL_Stream; |
205 |
|
206 |
/* }====================================================== */
|
207 |
#endif
|
208 |
|
209 |
|
210 |
|
211 |
/* compatibility with old module system */
|
212 |
#if defined(LUA_COMPAT_MODULE)
|
213 |
|
214 |
LUALIB_API void (luaL_pushmodule) (lua_State *L, const char *modname, |
215 |
int sizehint);
|
216 |
LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname, |
217 |
const luaL_Reg *l, int nup); |
218 |
|
219 |
#define luaL_register(L,n,l) (luaL_openlib(L,(n),(l),0)) |
220 |
|
221 |
#endif
|
222 |
|
223 |
|
224 |
#ifndef _KERNEL
|
225 |
/*
|
226 |
** {==================================================================
|
227 |
** "Abstraction Layer" for basic report of messages and errors
|
228 |
** ===================================================================
|
229 |
*/
|
230 |
|
231 |
/* print a string */
|
232 |
#if !defined(lua_writestring)
|
233 |
#define lua_writestring(s,l) fwrite((s), sizeof(char), (l), stdout) |
234 |
#endif
|
235 |
|
236 |
/* print a newline and flush the output */
|
237 |
#if !defined(lua_writeline)
|
238 |
#define lua_writeline() (lua_writestring("\n", 1), fflush(stdout)) |
239 |
#endif
|
240 |
|
241 |
/* print an error message */
|
242 |
#if !defined(lua_writestringerror)
|
243 |
#define lua_writestringerror(s,p) \
|
244 |
(fprintf(stderr, (s), (p)), fflush(stderr)) |
245 |
#endif
|
246 |
|
247 |
/* }================================================================== */
|
248 |
#endif
|
249 |
|
250 |
|
251 |
/*
|
252 |
** {============================================================
|
253 |
** Compatibility with deprecated conversions
|
254 |
** =============================================================
|
255 |
*/
|
256 |
#if defined(LUA_COMPAT_APIINTCASTS)
|
257 |
|
258 |
#define luaL_checkunsigned(L,a) ((lua_Unsigned)luaL_checkinteger(L,a))
|
259 |
#define luaL_optunsigned(L,a,d) \
|
260 |
((lua_Unsigned)luaL_optinteger(L,a,(lua_Integer)(d))) |
261 |
|
262 |
#define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n))) |
263 |
#define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d))) |
264 |
|
265 |
#define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n))) |
266 |
#define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) |
267 |
|
268 |
#endif
|
269 |
/* }============================================================ */
|
270 |
|
271 |
|
272 |
|
273 |
#endif
|
274 |
|
275 |
|