?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1. /*
  2. ** Lua - A Scripting Language
  3. ** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
  4. ** See Copyright Notice at the end of this file
  5. */
  6.  
  7.  
  8. #ifndef lua_h
  9. #define lua_h
  10.  
  11. #include <stdarg.h>
  12. #include <stddef.h>
  13.  
  14.  
  15. #include "luaconf.h"
  16.  
  17.  
  18. #define LUA_VERSION_MAJOR       "5"
  19. #define LUA_VERSION_MINOR       "3"
  20. #define LUA_VERSION_NUM         503
  21. #define LUA_VERSION_RELEASE     "6"
  22.  
  23. #define LUA_VERSION     "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
  24. #define LUA_RELEASE     LUA_VERSION "." LUA_VERSION_RELEASE
  25. #define LUA_COPYRIGHT   LUA_RELEASE "  Copyright (C) 1994-2020 Lua.org, PUC-Rio"
  26. #define LUA_AUTHORS     "R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
  27.  
  28.  
  29. /* mark for precompiled code ('<esc>Lua') */
  30. #define LUA_SIGNATURE   "\x1bLua"
  31.  
  32. /* option for multiple returns in 'lua_pcall' and 'lua_call' */
  33. #define LUA_MULTRET     (-1)
  34.  
  35.  
  36. /*
  37. ** Pseudo-indices
  38. ** (-LUAI_MAXSTACK is the minimum valid index; we keep some free empty
  39. ** space after that to help overflow detection)
  40. */
  41. #define LUA_REGISTRYINDEX       (-LUAI_MAXSTACK - 1000)
  42. #define lua_upvalueindex(i)     (LUA_REGISTRYINDEX - (i))
  43.  
  44.  
  45. /* thread status */
  46. #define LUA_OK          0
  47. #define LUA_YIELD       1
  48. #define LUA_ERRRUN      2
  49. #define LUA_ERRSYNTAX   3
  50. #define LUA_ERRMEM      4
  51. #define LUA_ERRGCMM     5
  52. #define LUA_ERRERR      6
  53.  
  54.  
  55. typedef struct lua_State lua_State;
  56.  
  57.  
  58. /*
  59. ** basic types
  60. */
  61. #define LUA_TNONE               (-1)
  62.  
  63. #define LUA_TNIL                0
  64. #define LUA_TBOOLEAN            1
  65. #define LUA_TLIGHTUSERDATA      2
  66. #define LUA_TNUMBER             3
  67. #define LUA_TSTRING             4
  68. #define LUA_TTABLE              5
  69. #define LUA_TFUNCTION           6
  70. #define LUA_TUSERDATA           7
  71. #define LUA_TTHREAD             8
  72.  
  73. #define LUA_NUMTAGS             9
  74.  
  75.  
  76.  
  77. /* minimum Lua stack available to a C function */
  78. #define LUA_MINSTACK    20
  79.  
  80.  
  81. /* predefined values in the registry */
  82. #define LUA_RIDX_MAINTHREAD     1
  83. #define LUA_RIDX_GLOBALS        2
  84. #define LUA_RIDX_LAST           LUA_RIDX_GLOBALS
  85.  
  86.  
  87. /* type of numbers in Lua */
  88. typedef LUA_NUMBER lua_Number;
  89.  
  90.  
  91. /* type for integer functions */
  92. typedef LUA_INTEGER lua_Integer;
  93.  
  94. /* unsigned integer type */
  95. typedef LUA_UNSIGNED lua_Unsigned;
  96.  
  97. /* type for continuation-function contexts */
  98. typedef LUA_KCONTEXT lua_KContext;
  99.  
  100.  
  101. /*
  102. ** Type for C functions registered with Lua
  103. */
  104. typedef int (*lua_CFunction) (lua_State *L);
  105.  
  106. /*
  107. ** Type for continuation functions
  108. */
  109. typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);
  110.  
  111.  
  112. /*
  113. ** Type for functions that read/write blocks when loading/dumping Lua chunks
  114. */
  115. typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);
  116.  
  117. typedef int (*lua_Writer) (lua_State *L, const void *p, size_t sz, void *ud);
  118.  
  119.  
  120. /*
  121. ** Type for memory-allocation functions
  122. */
  123. typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
  124.  
  125.  
  126.  
  127. /*
  128. ** generic extra include file
  129. */
  130. #if defined(LUA_USER_H)
  131. #include LUA_USER_H
  132. #endif
  133.  
  134.  
  135. /*
  136. ** RCS ident string
  137. */
  138. extern const char lua_ident[];
  139.  
  140.  
  141. /*
  142. ** state manipulation
  143. */
  144. LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
  145. LUA_API void       (lua_close) (lua_State *L);
  146. LUA_API lua_State *(lua_newthread) (lua_State *L);
  147.  
  148. LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
  149.  
  150.  
  151. LUA_API const lua_Number *(lua_version) (lua_State *L);
  152.  
  153.  
  154. /*
  155. ** basic stack manipulation
  156. */
  157. LUA_API int   (lua_absindex) (lua_State *L, int idx);
  158. LUA_API int   (lua_gettop) (lua_State *L);
  159. LUA_API void  (lua_settop) (lua_State *L, int idx);
  160. LUA_API void  (lua_pushvalue) (lua_State *L, int idx);
  161. LUA_API void  (lua_rotate) (lua_State *L, int idx, int n);
  162. LUA_API void  (lua_copy) (lua_State *L, int fromidx, int toidx);
  163. LUA_API int   (lua_checkstack) (lua_State *L, int n);
  164.  
  165. LUA_API void  (lua_xmove) (lua_State *from, lua_State *to, int n);
  166.  
  167.  
  168. /*
  169. ** access functions (stack -> C)
  170. */
  171.  
  172. LUA_API int             (lua_isnumber) (lua_State *L, int idx);
  173. LUA_API int             (lua_isstring) (lua_State *L, int idx);
  174. LUA_API int             (lua_iscfunction) (lua_State *L, int idx);
  175. LUA_API int             (lua_isinteger) (lua_State *L, int idx);
  176. LUA_API int             (lua_isuserdata) (lua_State *L, int idx);
  177. LUA_API int             (lua_type) (lua_State *L, int idx);
  178. LUA_API const char     *(lua_typename) (lua_State *L, int tp);
  179.  
  180. LUA_API lua_Number      (lua_tonumberx) (lua_State *L, int idx, int *isnum);
  181. LUA_API lua_Integer     (lua_tointegerx) (lua_State *L, int idx, int *isnum);
  182. LUA_API int             (lua_toboolean) (lua_State *L, int idx);
  183. LUA_API const char     *(lua_tolstring) (lua_State *L, int idx, size_t *len);
  184. LUA_API size_t          (lua_rawlen) (lua_State *L, int idx);
  185. LUA_API lua_CFunction   (lua_tocfunction) (lua_State *L, int idx);
  186. LUA_API void           *(lua_touserdata) (lua_State *L, int idx);
  187. LUA_API lua_State      *(lua_tothread) (lua_State *L, int idx);
  188. LUA_API const void     *(lua_topointer) (lua_State *L, int idx);
  189.  
  190.  
  191. /*
  192. ** Comparison and arithmetic functions
  193. */
  194.  
  195. #define LUA_OPADD       0       /* ORDER TM, ORDER OP */
  196. #define LUA_OPSUB       1
  197. #define LUA_OPMUL       2
  198. #define LUA_OPMOD       3
  199. #define LUA_OPPOW       4
  200. #define LUA_OPDIV       5
  201. #define LUA_OPIDIV      6
  202. #define LUA_OPBAND      7
  203. #define LUA_OPBOR       8
  204. #define LUA_OPBXOR      9
  205. #define LUA_OPSHL       10
  206. #define LUA_OPSHR       11
  207. #define LUA_OPUNM       12
  208. #define LUA_OPBNOT      13
  209.  
  210. LUA_API void  (lua_arith) (lua_State *L, int op);
  211.  
  212. #define LUA_OPEQ        0
  213. #define LUA_OPLT        1
  214. #define LUA_OPLE        2
  215.  
  216. LUA_API int   (lua_rawequal) (lua_State *L, int idx1, int idx2);
  217. LUA_API int   (lua_compare) (lua_State *L, int idx1, int idx2, int op);
  218.  
  219.  
  220. /*
  221. ** push functions (C -> stack)
  222. */
  223. LUA_API void        (lua_pushnil) (lua_State *L);
  224. LUA_API void        (lua_pushnumber) (lua_State *L, lua_Number n);
  225. LUA_API void        (lua_pushinteger) (lua_State *L, lua_Integer n);
  226. LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t len);
  227. LUA_API const char *(lua_pushstring) (lua_State *L, const char *s);
  228. LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
  229.                                                       va_list argp);
  230. LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
  231. LUA_API void  (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
  232. LUA_API void  (lua_pushboolean) (lua_State *L, int b);
  233. LUA_API void  (lua_pushlightuserdata) (lua_State *L, void *p);
  234. LUA_API int   (lua_pushthread) (lua_State *L);
  235.  
  236.  
  237. /*
  238. ** get functions (Lua -> stack)
  239. */
  240. LUA_API int (lua_getglobal) (lua_State *L, const char *name);
  241. LUA_API int (lua_gettable) (lua_State *L, int idx);
  242. LUA_API int (lua_getfield) (lua_State *L, int idx, const char *k);
  243. LUA_API int (lua_geti) (lua_State *L, int idx, lua_Integer n);
  244. LUA_API int (lua_rawget) (lua_State *L, int idx);
  245. LUA_API int (lua_rawgeti) (lua_State *L, int idx, lua_Integer n);
  246. LUA_API int (lua_rawgetp) (lua_State *L, int idx, const void *p);
  247.  
  248. LUA_API void  (lua_createtable) (lua_State *L, int narr, int nrec);
  249. LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz);
  250. LUA_API int   (lua_getmetatable) (lua_State *L, int objindex);
  251. LUA_API int  (lua_getuservalue) (lua_State *L, int idx);
  252.  
  253.  
  254. /*
  255. ** set functions (stack -> Lua)
  256. */
  257. LUA_API void  (lua_setglobal) (lua_State *L, const char *name);
  258. LUA_API void  (lua_settable) (lua_State *L, int idx);
  259. LUA_API void  (lua_setfield) (lua_State *L, int idx, const char *k);
  260. LUA_API void  (lua_seti) (lua_State *L, int idx, lua_Integer n);
  261. LUA_API void  (lua_rawset) (lua_State *L, int idx);
  262. LUA_API void  (lua_rawseti) (lua_State *L, int idx, lua_Integer n);
  263. LUA_API void  (lua_rawsetp) (lua_State *L, int idx, const void *p);
  264. LUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
  265. LUA_API void  (lua_setuservalue) (lua_State *L, int idx);
  266.  
  267.  
  268. /*
  269. ** 'load' and 'call' functions (load and run Lua code)
  270. */
  271. LUA_API void  (lua_callk) (lua_State *L, int nargs, int nresults,
  272.                            lua_KContext ctx, lua_KFunction k);
  273. #define lua_call(L,n,r)         lua_callk(L, (n), (r), 0, NULL)
  274.  
  275. LUA_API int   (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
  276.                             lua_KContext ctx, lua_KFunction k);
  277. #define lua_pcall(L,n,r,f)      lua_pcallk(L, (n), (r), (f), 0, NULL)
  278.  
  279. LUA_API int   (lua_load) (lua_State *L, lua_Reader reader, void *dt,
  280.                           const char *chunkname, const char *mode);
  281.  
  282. LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data, int strip);
  283.  
  284.  
  285. /*
  286. ** coroutine functions
  287. */
  288. LUA_API int  (lua_yieldk)     (lua_State *L, int nresults, lua_KContext ctx,
  289.                                lua_KFunction k);
  290. LUA_API int  (lua_resume)     (lua_State *L, lua_State *from, int narg);
  291. LUA_API int  (lua_status)     (lua_State *L);
  292. LUA_API int (lua_isyieldable) (lua_State *L);
  293.  
  294. #define lua_yield(L,n)          lua_yieldk(L, (n), 0, NULL)
  295.  
  296.  
  297. /*
  298. ** garbage-collection function and options
  299. */
  300.  
  301. #define LUA_GCSTOP              0
  302. #define LUA_GCRESTART           1
  303. #define LUA_GCCOLLECT           2
  304. #define LUA_GCCOUNT             3
  305. #define LUA_GCCOUNTB            4
  306. #define LUA_GCSTEP              5
  307. #define LUA_GCSETPAUSE          6
  308. #define LUA_GCSETSTEPMUL        7
  309. #define LUA_GCISRUNNING         9
  310.  
  311. LUA_API int (lua_gc) (lua_State *L, int what, int data);
  312.  
  313.  
  314. /*
  315. ** miscellaneous functions
  316. */
  317.  
  318. LUA_API int   (lua_error) (lua_State *L);
  319.  
  320. LUA_API int   (lua_next) (lua_State *L, int idx);
  321.  
  322. LUA_API void  (lua_concat) (lua_State *L, int n);
  323. LUA_API void  (lua_len)    (lua_State *L, int idx);
  324.  
  325. LUA_API size_t   (lua_stringtonumber) (lua_State *L, const char *s);
  326.  
  327. LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
  328. LUA_API void      (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
  329.  
  330.  
  331.  
  332. /*
  333. ** {==============================================================
  334. ** some useful macros
  335. ** ===============================================================
  336. */
  337.  
  338. #define lua_getextraspace(L)    ((void *)((char *)(L) - LUA_EXTRASPACE))
  339.  
  340. #define lua_tonumber(L,i)       lua_tonumberx(L,(i),NULL)
  341. #define lua_tointeger(L,i)      lua_tointegerx(L,(i),NULL)
  342.  
  343. #define lua_pop(L,n)            lua_settop(L, -(n)-1)
  344.  
  345. #define lua_newtable(L)         lua_createtable(L, 0, 0)
  346.  
  347. #define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
  348.  
  349. #define lua_pushcfunction(L,f)  lua_pushcclosure(L, (f), 0)
  350.  
  351. #define lua_isfunction(L,n)     (lua_type(L, (n)) == LUA_TFUNCTION)
  352. #define lua_istable(L,n)        (lua_type(L, (n)) == LUA_TTABLE)
  353. #define lua_islightuserdata(L,n)        (lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
  354. #define lua_isnil(L,n)          (lua_type(L, (n)) == LUA_TNIL)
  355. #define lua_isboolean(L,n)      (lua_type(L, (n)) == LUA_TBOOLEAN)
  356. #define lua_isthread(L,n)       (lua_type(L, (n)) == LUA_TTHREAD)
  357. #define lua_isnone(L,n)         (lua_type(L, (n)) == LUA_TNONE)
  358. #define lua_isnoneornil(L, n)   (lua_type(L, (n)) <= 0)
  359.  
  360. #define lua_pushliteral(L, s)   lua_pushstring(L, "" s)
  361.  
  362. #define lua_pushglobaltable(L)  \
  363.         ((void)lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS))
  364.  
  365. #define lua_tostring(L,i)       lua_tolstring(L, (i), NULL)
  366.  
  367.  
  368. #define lua_insert(L,idx)       lua_rotate(L, (idx), 1)
  369.  
  370. #define lua_remove(L,idx)       (lua_rotate(L, (idx), -1), lua_pop(L, 1))
  371.  
  372. #define lua_replace(L,idx)      (lua_copy(L, -1, (idx)), lua_pop(L, 1))
  373.  
  374. /* }============================================================== */
  375.  
  376.  
  377. /*
  378. ** {==============================================================
  379. ** compatibility macros for unsigned conversions
  380. ** ===============================================================
  381. */
  382. #if defined(LUA_COMPAT_APIINTCASTS)
  383.  
  384. #define lua_pushunsigned(L,n)   lua_pushinteger(L, (lua_Integer)(n))
  385. #define lua_tounsignedx(L,i,is) ((lua_Unsigned)lua_tointegerx(L,i,is))
  386. #define lua_tounsigned(L,i)     lua_tounsignedx(L,(i),NULL)
  387.  
  388. #endif
  389. /* }============================================================== */
  390.  
  391. /*
  392. ** {======================================================================
  393. ** Debug API
  394. ** =======================================================================
  395. */
  396.  
  397.  
  398. /*
  399. ** Event codes
  400. */
  401. #define LUA_HOOKCALL    0
  402. #define LUA_HOOKRET     1
  403. #define LUA_HOOKLINE    2
  404. #define LUA_HOOKCOUNT   3
  405. #define LUA_HOOKTAILCALL 4
  406.  
  407.  
  408. /*
  409. ** Event masks
  410. */
  411. #define LUA_MASKCALL    (1 << LUA_HOOKCALL)
  412. #define LUA_MASKRET     (1 << LUA_HOOKRET)
  413. #define LUA_MASKLINE    (1 << LUA_HOOKLINE)
  414. #define LUA_MASKCOUNT   (1 << LUA_HOOKCOUNT)
  415.  
  416. typedef struct lua_Debug lua_Debug;  /* activation record */
  417.  
  418.  
  419. /* Functions to be called by the debugger in specific events */
  420. typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
  421.  
  422.  
  423. LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar);
  424. LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar);
  425. LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n);
  426. LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n);
  427. LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n);
  428. LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n);
  429.  
  430. LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n);
  431. LUA_API void  (lua_upvaluejoin) (lua_State *L, int fidx1, int n1,
  432.                                                int fidx2, int n2);
  433.  
  434. LUA_API void (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count);
  435. LUA_API lua_Hook (lua_gethook) (lua_State *L);
  436. LUA_API int (lua_gethookmask) (lua_State *L);
  437. LUA_API int (lua_gethookcount) (lua_State *L);
  438.  
  439.  
  440. struct lua_Debug {
  441.   int event;
  442.   const char *name;     /* (n) */
  443.   const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */
  444.   const char *what;     /* (S) 'Lua', 'C', 'main', 'tail' */
  445.   const char *source;   /* (S) */
  446.   int currentline;      /* (l) */
  447.   int linedefined;      /* (S) */
  448.   int lastlinedefined;  /* (S) */
  449.   unsigned char nups;   /* (u) number of upvalues */
  450.   unsigned char nparams;/* (u) number of parameters */
  451.   char isvararg;        /* (u) */
  452.   char istailcall;      /* (t) */
  453.   char short_src[LUA_IDSIZE]; /* (S) */
  454.   /* private part */
  455.   struct CallInfo *i_ci;  /* active function */
  456. };
  457.  
  458. /* }====================================================================== */
  459.  
  460.  
  461. /******************************************************************************
  462. * Copyright (C) 1994-2020 Lua.org, PUC-Rio.
  463. *
  464. * Permission is hereby granted, free of charge, to any person obtaining
  465. * a copy of this software and associated documentation files (the
  466. * "Software"), to deal in the Software without restriction, including
  467. * without limitation the rights to use, copy, modify, merge, publish,
  468. * distribute, sublicense, and/or sell copies of the Software, and to
  469. * permit persons to whom the Software is furnished to do so, subject to
  470. * the following conditions:
  471. *
  472. * The above copyright notice and this permission notice shall be
  473. * included in all copies or substantial portions of the Software.
  474. *
  475. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  476. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  477. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  478. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  479. * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  480. * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  481. * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  482. ******************************************************************************/
  483.  
  484.  
  485. #endif
  486.