Update Troubleshooting.md
[RRG-proxmark3.git] / client / deps / liblua / lua.h
blobae2766323e4a2f75200cdd7430fba94119bf0a90
1 /*
2 ** $Id: lua.h $
3 ** Lua - A Scripting Language
4 ** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
5 ** See Copyright Notice at the end of this file
6 */
9 #ifndef lua_h
10 #define lua_h
12 #include <stdarg.h>
13 #include <stddef.h>
16 #include "luaconf.h"
19 #define LUA_VERSION_MAJOR "5"
20 #define LUA_VERSION_MINOR "4"
21 #define LUA_VERSION_RELEASE "7"
23 #define LUA_VERSION_NUM 504
24 #define LUA_VERSION_RELEASE_NUM (LUA_VERSION_NUM * 100 + 7)
26 #define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
27 #define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE
28 #define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2024 Lua.org, PUC-Rio"
29 #define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
32 /* mark for precompiled code ('<esc>Lua') */
33 #define LUA_SIGNATURE "\x1bLua"
35 /* option for multiple returns in 'lua_pcall' and 'lua_call' */
36 #define LUA_MULTRET (-1)
40 ** Pseudo-indices
41 ** (-LUAI_MAXSTACK is the minimum valid index; we keep some free empty
42 ** space after that to help overflow detection)
44 #define LUA_REGISTRYINDEX (-LUAI_MAXSTACK - 1000)
45 #define lua_upvalueindex(i) (LUA_REGISTRYINDEX - (i))
48 /* thread status */
49 #define LUA_OK 0
50 #define LUA_YIELD 1
51 #define LUA_ERRRUN 2
52 #define LUA_ERRSYNTAX 3
53 #define LUA_ERRMEM 4
54 #define LUA_ERRERR 5
57 typedef struct lua_State lua_State;
61 ** basic types
63 #define LUA_TNONE (-1)
65 #define LUA_TNIL 0
66 #define LUA_TBOOLEAN 1
67 #define LUA_TLIGHTUSERDATA 2
68 #define LUA_TNUMBER 3
69 #define LUA_TSTRING 4
70 #define LUA_TTABLE 5
71 #define LUA_TFUNCTION 6
72 #define LUA_TUSERDATA 7
73 #define LUA_TTHREAD 8
75 #define LUA_NUMTYPES 9
79 /* minimum Lua stack available to a C function */
80 #define LUA_MINSTACK 20
83 /* predefined values in the registry */
84 #define LUA_RIDX_MAINTHREAD 1
85 #define LUA_RIDX_GLOBALS 2
86 #define LUA_RIDX_LAST LUA_RIDX_GLOBALS
89 /* type of numbers in Lua */
90 typedef LUA_NUMBER lua_Number;
93 /* type for integer functions */
94 typedef LUA_INTEGER lua_Integer;
96 /* unsigned integer type */
97 typedef LUA_UNSIGNED lua_Unsigned;
99 /* type for continuation-function contexts */
100 typedef LUA_KCONTEXT lua_KContext;
104 ** Type for C functions registered with Lua
106 typedef int (*lua_CFunction)(lua_State *L);
109 ** Type for continuation functions
111 typedef int (*lua_KFunction)(lua_State *L, int status, lua_KContext ctx);
115 ** Type for functions that read/write blocks when loading/dumping Lua chunks
117 typedef const char *(*lua_Reader)(lua_State *L, void *ud, size_t *sz);
119 typedef int (*lua_Writer)(lua_State *L, const void *p, size_t sz, void *ud);
123 ** Type for memory-allocation functions
125 typedef void *(*lua_Alloc)(void *ud, void *ptr, size_t osize, size_t nsize);
129 ** Type for warning functions
131 typedef void (*lua_WarnFunction)(void *ud, const char *msg, int tocont);
135 ** Type used by the debug API to collect debug information
137 typedef struct lua_Debug lua_Debug;
141 ** Functions to be called by the debugger in specific events
143 typedef void (*lua_Hook)(lua_State *L, lua_Debug *ar);
147 ** generic extra include file
149 #if defined(LUA_USER_H)
150 #include LUA_USER_H
151 #endif
155 ** RCS ident string
157 extern const char lua_ident[];
161 ** state manipulation
163 LUA_API lua_State *(lua_newstate)(lua_Alloc f, void *ud);
164 LUA_API void (lua_close)(lua_State *L);
165 LUA_API lua_State *(lua_newthread)(lua_State *L);
166 LUA_API int (lua_closethread)(lua_State *L, lua_State *from);
167 LUA_API int (lua_resetthread)(lua_State *L); /* Deprecated! */
169 LUA_API lua_CFunction(lua_atpanic)(lua_State *L, lua_CFunction panicf);
172 LUA_API lua_Number(lua_version)(lua_State *L);
176 ** basic stack manipulation
178 LUA_API int (lua_absindex)(lua_State *L, int idx);
179 LUA_API int (lua_gettop)(lua_State *L);
180 LUA_API void (lua_settop)(lua_State *L, int idx);
181 LUA_API void (lua_pushvalue)(lua_State *L, int idx);
182 LUA_API void (lua_rotate)(lua_State *L, int idx, int n);
183 LUA_API void (lua_copy)(lua_State *L, int fromidx, int toidx);
184 LUA_API int (lua_checkstack)(lua_State *L, int n);
186 LUA_API void (lua_xmove)(lua_State *from, lua_State *to, int n);
190 ** access functions (stack -> C)
193 LUA_API int (lua_isnumber)(lua_State *L, int idx);
194 LUA_API int (lua_isstring)(lua_State *L, int idx);
195 LUA_API int (lua_iscfunction)(lua_State *L, int idx);
196 LUA_API int (lua_isinteger)(lua_State *L, int idx);
197 LUA_API int (lua_isuserdata)(lua_State *L, int idx);
198 LUA_API int (lua_type)(lua_State *L, int idx);
199 LUA_API const char *(lua_typename)(lua_State *L, int tp);
201 LUA_API lua_Number(lua_tonumberx)(lua_State *L, int idx, int *isnum);
202 LUA_API lua_Integer(lua_tointegerx)(lua_State *L, int idx, int *isnum);
203 LUA_API int (lua_toboolean)(lua_State *L, int idx);
204 LUA_API const char *(lua_tolstring)(lua_State *L, int idx, size_t *len);
205 LUA_API lua_Unsigned(lua_rawlen)(lua_State *L, int idx);
206 LUA_API lua_CFunction(lua_tocfunction)(lua_State *L, int idx);
207 LUA_API void *(lua_touserdata)(lua_State *L, int idx);
208 LUA_API lua_State *(lua_tothread)(lua_State *L, int idx);
209 LUA_API const void *(lua_topointer)(lua_State *L, int idx);
213 ** Comparison and arithmetic functions
216 #define LUA_OPADD 0 /* ORDER TM, ORDER OP */
217 #define LUA_OPSUB 1
218 #define LUA_OPMUL 2
219 #define LUA_OPMOD 3
220 #define LUA_OPPOW 4
221 #define LUA_OPDIV 5
222 #define LUA_OPIDIV 6
223 #define LUA_OPBAND 7
224 #define LUA_OPBOR 8
225 #define LUA_OPBXOR 9
226 #define LUA_OPSHL 10
227 #define LUA_OPSHR 11
228 #define LUA_OPUNM 12
229 #define LUA_OPBNOT 13
231 LUA_API void (lua_arith)(lua_State *L, int op);
233 #define LUA_OPEQ 0
234 #define LUA_OPLT 1
235 #define LUA_OPLE 2
237 LUA_API int (lua_rawequal)(lua_State *L, int idx1, int idx2);
238 LUA_API int (lua_compare)(lua_State *L, int idx1, int idx2, int op);
242 ** push functions (C -> stack)
244 LUA_API void (lua_pushnil)(lua_State *L);
245 LUA_API void (lua_pushnumber)(lua_State *L, lua_Number n);
246 LUA_API void (lua_pushinteger)(lua_State *L, lua_Integer n);
247 LUA_API const char *(lua_pushlstring)(lua_State *L, const char *s, size_t len);
248 LUA_API const char *(lua_pushstring)(lua_State *L, const char *s);
249 LUA_API const char *(lua_pushvfstring)(lua_State *L, const char *fmt,
250 va_list argp);
251 LUA_API const char *(lua_pushfstring)(lua_State *L, const char *fmt, ...);
252 LUA_API void (lua_pushcclosure)(lua_State *L, lua_CFunction fn, int n);
253 LUA_API void (lua_pushboolean)(lua_State *L, int b);
254 LUA_API void (lua_pushlightuserdata)(lua_State *L, void *p);
255 LUA_API int (lua_pushthread)(lua_State *L);
259 ** get functions (Lua -> stack)
261 LUA_API int (lua_getglobal)(lua_State *L, const char *name);
262 LUA_API int (lua_gettable)(lua_State *L, int idx);
263 LUA_API int (lua_getfield)(lua_State *L, int idx, const char *k);
264 LUA_API int (lua_geti)(lua_State *L, int idx, lua_Integer n);
265 LUA_API int (lua_rawget)(lua_State *L, int idx);
266 LUA_API int (lua_rawgeti)(lua_State *L, int idx, lua_Integer n);
267 LUA_API int (lua_rawgetp)(lua_State *L, int idx, const void *p);
269 LUA_API void (lua_createtable)(lua_State *L, int narr, int nrec);
270 LUA_API void *(lua_newuserdatauv)(lua_State *L, size_t sz, int nuvalue);
271 LUA_API int (lua_getmetatable)(lua_State *L, int objindex);
272 LUA_API int (lua_getiuservalue)(lua_State *L, int idx, int n);
276 ** set functions (stack -> Lua)
278 LUA_API void (lua_setglobal)(lua_State *L, const char *name);
279 LUA_API void (lua_settable)(lua_State *L, int idx);
280 LUA_API void (lua_setfield)(lua_State *L, int idx, const char *k);
281 LUA_API void (lua_seti)(lua_State *L, int idx, lua_Integer n);
282 LUA_API void (lua_rawset)(lua_State *L, int idx);
283 LUA_API void (lua_rawseti)(lua_State *L, int idx, lua_Integer n);
284 LUA_API void (lua_rawsetp)(lua_State *L, int idx, const void *p);
285 LUA_API int (lua_setmetatable)(lua_State *L, int objindex);
286 LUA_API int (lua_setiuservalue)(lua_State *L, int idx, int n);
290 ** 'load' and 'call' functions (load and run Lua code)
292 LUA_API void (lua_callk)(lua_State *L, int nargs, int nresults,
293 lua_KContext ctx, lua_KFunction k);
294 #define lua_call(L,n,r) lua_callk(L, (n), (r), 0, NULL)
296 LUA_API int (lua_pcallk)(lua_State *L, int nargs, int nresults, int errfunc,
297 lua_KContext ctx, lua_KFunction k);
298 #define lua_pcall(L,n,r,f) lua_pcallk(L, (n), (r), (f), 0, NULL)
300 LUA_API int (lua_load)(lua_State *L, lua_Reader reader, void *dt,
301 const char *chunkname, const char *mode);
303 LUA_API int (lua_dump)(lua_State *L, lua_Writer writer, void *data, int strip);
307 ** coroutine functions
309 LUA_API int (lua_yieldk)(lua_State *L, int nresults, lua_KContext ctx,
310 lua_KFunction k);
311 LUA_API int (lua_resume)(lua_State *L, lua_State *from, int narg,
312 int *nres);
313 LUA_API int (lua_status)(lua_State *L);
314 LUA_API int (lua_isyieldable)(lua_State *L);
316 #define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL)
320 ** Warning-related functions
322 LUA_API void (lua_setwarnf)(lua_State *L, lua_WarnFunction f, void *ud);
323 LUA_API void (lua_warning)(lua_State *L, const char *msg, int tocont);
327 ** garbage-collection function and options
330 #define LUA_GCSTOP 0
331 #define LUA_GCRESTART 1
332 #define LUA_GCCOLLECT 2
333 #define LUA_GCCOUNT 3
334 #define LUA_GCCOUNTB 4
335 #define LUA_GCSTEP 5
336 #define LUA_GCSETPAUSE 6
337 #define LUA_GCSETSTEPMUL 7
338 #define LUA_GCISRUNNING 9
339 #define LUA_GCGEN 10
340 #define LUA_GCINC 11
342 LUA_API int (lua_gc)(lua_State *L, int what, ...);
346 ** miscellaneous functions
349 LUA_API int (lua_error)(lua_State *L);
351 LUA_API int (lua_next)(lua_State *L, int idx);
353 LUA_API void (lua_concat)(lua_State *L, int n);
354 LUA_API void (lua_len)(lua_State *L, int idx);
356 LUA_API size_t (lua_stringtonumber)(lua_State *L, const char *s);
358 LUA_API lua_Alloc(lua_getallocf)(lua_State *L, void **ud);
359 LUA_API void (lua_setallocf)(lua_State *L, lua_Alloc f, void *ud);
361 LUA_API void (lua_toclose)(lua_State *L, int idx);
362 LUA_API void (lua_closeslot)(lua_State *L, int idx);
366 ** {==============================================================
367 ** some useful macros
368 ** ===============================================================
371 #define lua_getextraspace(L) ((void *)((char *)(L) - LUA_EXTRASPACE))
373 #define lua_tonumber(L,i) lua_tonumberx(L,(i),NULL)
374 #define lua_tointeger(L,i) lua_tointegerx(L,(i),NULL)
376 #define lua_pop(L,n) lua_settop(L, -(n)-1)
378 #define lua_newtable(L) lua_createtable(L, 0, 0)
380 #define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
382 #define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0)
384 #define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION)
385 #define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE)
386 #define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
387 #define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL)
388 #define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN)
389 #define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD)
390 #define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE)
391 #define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0)
393 #define lua_pushliteral(L, s) lua_pushstring(L, "" s)
395 #define lua_pushglobaltable(L) \
396 ((void)lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS))
398 #define lua_tostring(L,i) lua_tolstring(L, (i), NULL)
401 #define lua_insert(L,idx) lua_rotate(L, (idx), 1)
403 #define lua_remove(L,idx) (lua_rotate(L, (idx), -1), lua_pop(L, 1))
405 #define lua_replace(L,idx) (lua_copy(L, -1, (idx)), lua_pop(L, 1))
407 /* }============================================================== */
411 ** {==============================================================
412 ** compatibility macros
413 ** ===============================================================
415 #if defined(LUA_COMPAT_APIINTCASTS)
417 #define lua_pushunsigned(L,n) lua_pushinteger(L, (lua_Integer)(n))
418 #define lua_tounsignedx(L,i,is) ((lua_Unsigned)lua_tointegerx(L,i,is))
419 #define lua_tounsigned(L,i) lua_tounsignedx(L,(i),NULL)
421 #endif
423 #define lua_newuserdata(L,s) lua_newuserdatauv(L,s,1)
424 #define lua_getuservalue(L,idx) lua_getiuservalue(L,idx,1)
425 #define lua_setuservalue(L,idx) lua_setiuservalue(L,idx,1)
427 #define LUA_NUMTAGS LUA_NUMTYPES
429 /* }============================================================== */
432 ** {======================================================================
433 ** Debug API
434 ** =======================================================================
439 ** Event codes
441 #define LUA_HOOKCALL 0
442 #define LUA_HOOKRET 1
443 #define LUA_HOOKLINE 2
444 #define LUA_HOOKCOUNT 3
445 #define LUA_HOOKTAILCALL 4
449 ** Event masks
451 #define LUA_MASKCALL (1 << LUA_HOOKCALL)
452 #define LUA_MASKRET (1 << LUA_HOOKRET)
453 #define LUA_MASKLINE (1 << LUA_HOOKLINE)
454 #define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT)
457 LUA_API int (lua_getstack)(lua_State *L, int level, lua_Debug *ar);
458 LUA_API int (lua_getinfo)(lua_State *L, const char *what, lua_Debug *ar);
459 LUA_API const char *(lua_getlocal)(lua_State *L, const lua_Debug *ar, int n);
460 LUA_API const char *(lua_setlocal)(lua_State *L, const lua_Debug *ar, int n);
461 LUA_API const char *(lua_getupvalue)(lua_State *L, int funcindex, int n);
462 LUA_API const char *(lua_setupvalue)(lua_State *L, int funcindex, int n);
464 LUA_API void *(lua_upvalueid)(lua_State *L, int fidx, int n);
465 LUA_API void (lua_upvaluejoin)(lua_State *L, int fidx1, int n1,
466 int fidx2, int n2);
468 LUA_API void (lua_sethook)(lua_State *L, lua_Hook func, int mask, int count);
469 LUA_API lua_Hook(lua_gethook)(lua_State *L);
470 LUA_API int (lua_gethookmask)(lua_State *L);
471 LUA_API int (lua_gethookcount)(lua_State *L);
473 LUA_API int (lua_setcstacklimit)(lua_State *L, unsigned int limit);
475 struct lua_Debug {
476 int event;
477 const char *name; /* (n) */
478 const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */
479 const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */
480 const char *source; /* (S) */
481 size_t srclen; /* (S) */
482 int currentline; /* (l) */
483 int linedefined; /* (S) */
484 int lastlinedefined; /* (S) */
485 unsigned char nups; /* (u) number of upvalues */
486 unsigned char nparams;/* (u) number of parameters */
487 char isvararg; /* (u) */
488 char istailcall; /* (t) */
489 unsigned short ftransfer; /* (r) index of first value transferred */
490 unsigned short ntransfer; /* (r) number of transferred values */
491 char short_src[LUA_IDSIZE]; /* (S) */
492 /* private part */
493 struct CallInfo *i_ci; /* active function */
496 /* }====================================================================== */
499 /******************************************************************************
500 * Copyright (C) 1994-2024 Lua.org, PUC-Rio.
502 * Permission is hereby granted, free of charge, to any person obtaining
503 * a copy of this software and associated documentation files (the
504 * "Software"), to deal in the Software without restriction, including
505 * without limitation the rights to use, copy, modify, merge, publish,
506 * distribute, sublicense, and/or sell copies of the Software, and to
507 * permit persons to whom the Software is furnished to do so, subject to
508 * the following conditions:
510 * The above copyright notice and this permission notice shall be
511 * included in all copies or substantial portions of the Software.
513 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
514 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
515 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
516 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
517 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
518 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
519 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
520 ******************************************************************************/
523 #endif