116a5fed65808adf648004b34f98718301d718fa2darylm/*
216a5fed65808adf648004b34f98718301d718fa2darylm** $Id: lua.h,v 1.285.1.2 2013/11/11 12:09:16 roberto Exp $
316a5fed65808adf648004b34f98718301d718fa2darylm** Lua - A Scripting Language
416a5fed65808adf648004b34f98718301d718fa2darylm** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
516a5fed65808adf648004b34f98718301d718fa2darylm** See Copyright Notice at the end of this file
616a5fed65808adf648004b34f98718301d718fa2darylm*/
716a5fed65808adf648004b34f98718301d718fa2darylm
816a5fed65808adf648004b34f98718301d718fa2darylm
916a5fed65808adf648004b34f98718301d718fa2darylm#ifndef lua_h
1016a5fed65808adf648004b34f98718301d718fa2darylm#define lua_h
1116a5fed65808adf648004b34f98718301d718fa2darylm
1216a5fed65808adf648004b34f98718301d718fa2darylm#include <stdarg.h>
1316a5fed65808adf648004b34f98718301d718fa2darylm#include <stddef.h>
1416a5fed65808adf648004b34f98718301d718fa2darylm
1516a5fed65808adf648004b34f98718301d718fa2darylm
1616a5fed65808adf648004b34f98718301d718fa2darylm#include <Lua/luaconf.h>
1716a5fed65808adf648004b34f98718301d718fa2darylm
1816a5fed65808adf648004b34f98718301d718fa2darylm
1916a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_VERSION_MAJOR   "5"
2016a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_VERSION_MINOR   "2"
2116a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_VERSION_NUM     502
2216a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_VERSION_RELEASE "3"
2316a5fed65808adf648004b34f98718301d718fa2darylm
2416a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
2516a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE
2616a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_COPYRIGHT   LUA_RELEASE "  Copyright (C) 1994-2013 Lua.org, PUC-Rio"
2716a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
2816a5fed65808adf648004b34f98718301d718fa2darylm
2916a5fed65808adf648004b34f98718301d718fa2darylm
3016a5fed65808adf648004b34f98718301d718fa2darylm/* mark for precompiled code ('<esc>Lua') */
3116a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_SIGNATURE   "\033Lua"
3216a5fed65808adf648004b34f98718301d718fa2darylm
3316a5fed65808adf648004b34f98718301d718fa2darylm/* option for multiple returns in 'lua_pcall' and 'lua_call' */
3416a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_MULTRET (-1)
3516a5fed65808adf648004b34f98718301d718fa2darylm
3616a5fed65808adf648004b34f98718301d718fa2darylm
3716a5fed65808adf648004b34f98718301d718fa2darylm/*
3816a5fed65808adf648004b34f98718301d718fa2darylm** pseudo-indices
3916a5fed65808adf648004b34f98718301d718fa2darylm*/
4016a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_REGISTRYINDEX   LUAI_FIRSTPSEUDOIDX
4116a5fed65808adf648004b34f98718301d718fa2darylm#define lua_upvalueindex(i) (LUA_REGISTRYINDEX - (i))
4216a5fed65808adf648004b34f98718301d718fa2darylm
4316a5fed65808adf648004b34f98718301d718fa2darylm
4416a5fed65808adf648004b34f98718301d718fa2darylm/* thread status */
4516a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OK      0
4616a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_YIELD   1
4716a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_ERRRUN  2
4816a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_ERRSYNTAX   3
4916a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_ERRMEM  4
5016a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_ERRGCMM 5
5116a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_ERRERR  6
5216a5fed65808adf648004b34f98718301d718fa2darylm
5316a5fed65808adf648004b34f98718301d718fa2darylm
5416a5fed65808adf648004b34f98718301d718fa2darylmtypedef struct lua_State lua_State;
5516a5fed65808adf648004b34f98718301d718fa2darylm
5616a5fed65808adf648004b34f98718301d718fa2darylmtypedef int (*lua_CFunction) (lua_State *L);
5716a5fed65808adf648004b34f98718301d718fa2darylm
5816a5fed65808adf648004b34f98718301d718fa2darylm
5916a5fed65808adf648004b34f98718301d718fa2darylm/*
6016a5fed65808adf648004b34f98718301d718fa2darylm** functions that read/write blocks when loading/dumping Lua chunks
6116a5fed65808adf648004b34f98718301d718fa2darylm*/
6216a5fed65808adf648004b34f98718301d718fa2darylmtypedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);
6316a5fed65808adf648004b34f98718301d718fa2darylm
6416a5fed65808adf648004b34f98718301d718fa2darylmtypedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud);
6516a5fed65808adf648004b34f98718301d718fa2darylm
6616a5fed65808adf648004b34f98718301d718fa2darylm
6716a5fed65808adf648004b34f98718301d718fa2darylm/*
6816a5fed65808adf648004b34f98718301d718fa2darylm** prototype for memory-allocation functions
6916a5fed65808adf648004b34f98718301d718fa2darylm*/
7016a5fed65808adf648004b34f98718301d718fa2darylmtypedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
7116a5fed65808adf648004b34f98718301d718fa2darylm
7216a5fed65808adf648004b34f98718301d718fa2darylm
7316a5fed65808adf648004b34f98718301d718fa2darylm/*
7416a5fed65808adf648004b34f98718301d718fa2darylm** basic types
7516a5fed65808adf648004b34f98718301d718fa2darylm*/
7616a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_TNONE       (-1)
7716a5fed65808adf648004b34f98718301d718fa2darylm
7816a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_TNIL        0
7916a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_TBOOLEAN        1
8016a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_TLIGHTUSERDATA  2
8116a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_TNUMBER     3
8216a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_TSTRING     4
8316a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_TTABLE      5
8416a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_TFUNCTION       6
8516a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_TUSERDATA       7
8616a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_TTHREAD     8
8716a5fed65808adf648004b34f98718301d718fa2darylm
8816a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_NUMTAGS     9
8916a5fed65808adf648004b34f98718301d718fa2darylm
9016a5fed65808adf648004b34f98718301d718fa2darylm
9116a5fed65808adf648004b34f98718301d718fa2darylm
9216a5fed65808adf648004b34f98718301d718fa2darylm/* minimum Lua stack available to a C function */
9316a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_MINSTACK    20
9416a5fed65808adf648004b34f98718301d718fa2darylm
9516a5fed65808adf648004b34f98718301d718fa2darylm
9616a5fed65808adf648004b34f98718301d718fa2darylm/* predefined values in the registry */
9716a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_RIDX_MAINTHREAD 1
9816a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_RIDX_GLOBALS    2
9916a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_RIDX_LAST       LUA_RIDX_GLOBALS
10016a5fed65808adf648004b34f98718301d718fa2darylm
10116a5fed65808adf648004b34f98718301d718fa2darylm
10216a5fed65808adf648004b34f98718301d718fa2darylm/* type of numbers in Lua */
10316a5fed65808adf648004b34f98718301d718fa2darylmtypedef LUA_NUMBER lua_Number;
10416a5fed65808adf648004b34f98718301d718fa2darylm
10516a5fed65808adf648004b34f98718301d718fa2darylm
10616a5fed65808adf648004b34f98718301d718fa2darylm/* type for integer functions */
10716a5fed65808adf648004b34f98718301d718fa2darylmtypedef LUA_INTEGER lua_Integer;
10816a5fed65808adf648004b34f98718301d718fa2darylm
10916a5fed65808adf648004b34f98718301d718fa2darylm/* unsigned integer type */
11016a5fed65808adf648004b34f98718301d718fa2darylmtypedef LUA_UNSIGNED lua_Unsigned;
11116a5fed65808adf648004b34f98718301d718fa2darylm
11216a5fed65808adf648004b34f98718301d718fa2darylm
11316a5fed65808adf648004b34f98718301d718fa2darylm
11416a5fed65808adf648004b34f98718301d718fa2darylm/*
11516a5fed65808adf648004b34f98718301d718fa2darylm** generic extra include file
11616a5fed65808adf648004b34f98718301d718fa2darylm*/
11716a5fed65808adf648004b34f98718301d718fa2darylm#if defined(LUA_USER_H)
11816a5fed65808adf648004b34f98718301d718fa2darylm#include LUA_USER_H
11916a5fed65808adf648004b34f98718301d718fa2darylm#endif
12016a5fed65808adf648004b34f98718301d718fa2darylm
12116a5fed65808adf648004b34f98718301d718fa2darylm
12216a5fed65808adf648004b34f98718301d718fa2darylm/*
12316a5fed65808adf648004b34f98718301d718fa2darylm** RCS ident string
12416a5fed65808adf648004b34f98718301d718fa2darylm*/
12516a5fed65808adf648004b34f98718301d718fa2darylmextern const char lua_ident[];
12616a5fed65808adf648004b34f98718301d718fa2darylm
12716a5fed65808adf648004b34f98718301d718fa2darylm
12816a5fed65808adf648004b34f98718301d718fa2darylm/*
12916a5fed65808adf648004b34f98718301d718fa2darylm** state manipulation
13016a5fed65808adf648004b34f98718301d718fa2darylm*/
13116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
13216a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void       (lua_close) (lua_State *L);
13316a5fed65808adf648004b34f98718301d718fa2darylmLUA_API lua_State *(lua_newthread) (lua_State *L);
13416a5fed65808adf648004b34f98718301d718fa2darylm
13516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
13616a5fed65808adf648004b34f98718301d718fa2darylm
13716a5fed65808adf648004b34f98718301d718fa2darylm
13816a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const lua_Number *(lua_version) (lua_State *L);
13916a5fed65808adf648004b34f98718301d718fa2darylm
14016a5fed65808adf648004b34f98718301d718fa2darylm
14116a5fed65808adf648004b34f98718301d718fa2darylm/*
14216a5fed65808adf648004b34f98718301d718fa2darylm** basic stack manipulation
14316a5fed65808adf648004b34f98718301d718fa2darylm*/
14416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_absindex) (lua_State *L, int idx);
14516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_gettop) (lua_State *L);
14616a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_settop) (lua_State *L, int idx);
14716a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_pushvalue) (lua_State *L, int idx);
14816a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_remove) (lua_State *L, int idx);
14916a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_insert) (lua_State *L, int idx);
15016a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_replace) (lua_State *L, int idx);
15116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_copy) (lua_State *L, int fromidx, int toidx);
15216a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_checkstack) (lua_State *L, int sz);
15316a5fed65808adf648004b34f98718301d718fa2darylm
15416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_xmove) (lua_State *from, lua_State *to, int n);
15516a5fed65808adf648004b34f98718301d718fa2darylm
15616a5fed65808adf648004b34f98718301d718fa2darylm
15716a5fed65808adf648004b34f98718301d718fa2darylm/*
15816a5fed65808adf648004b34f98718301d718fa2darylm** access functions (stack -> C)
15916a5fed65808adf648004b34f98718301d718fa2darylm*/
16016a5fed65808adf648004b34f98718301d718fa2darylm
16116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int             (lua_isnumber) (lua_State *L, int idx);
16216a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int             (lua_isstring) (lua_State *L, int idx);
16316a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int             (lua_iscfunction) (lua_State *L, int idx);
16416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int             (lua_isuserdata) (lua_State *L, int idx);
16516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int             (lua_type) (lua_State *L, int idx);
16616a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const char     *(lua_typename) (lua_State *L, int tp);
16716a5fed65808adf648004b34f98718301d718fa2darylm
16816a5fed65808adf648004b34f98718301d718fa2darylmLUA_API lua_Number      (lua_tonumberx) (lua_State *L, int idx, int *isnum);
16916a5fed65808adf648004b34f98718301d718fa2darylmLUA_API lua_Integer     (lua_tointegerx) (lua_State *L, int idx, int *isnum);
17016a5fed65808adf648004b34f98718301d718fa2darylmLUA_API lua_Unsigned    (lua_tounsignedx) (lua_State *L, int idx, int *isnum);
17116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int             (lua_toboolean) (lua_State *L, int idx);
17216a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const char     *(lua_tolstring) (lua_State *L, int idx, size_t *len);
17316a5fed65808adf648004b34f98718301d718fa2darylmLUA_API size_t          (lua_rawlen) (lua_State *L, int idx);
17416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API lua_CFunction   (lua_tocfunction) (lua_State *L, int idx);
17516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void           *(lua_touserdata) (lua_State *L, int idx);
17616a5fed65808adf648004b34f98718301d718fa2darylmLUA_API lua_State      *(lua_tothread) (lua_State *L, int idx);
17716a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const void     *(lua_topointer) (lua_State *L, int idx);
17816a5fed65808adf648004b34f98718301d718fa2darylm
17916a5fed65808adf648004b34f98718301d718fa2darylm
18016a5fed65808adf648004b34f98718301d718fa2darylm/*
18116a5fed65808adf648004b34f98718301d718fa2darylm** Comparison and arithmetic functions
18216a5fed65808adf648004b34f98718301d718fa2darylm*/
18316a5fed65808adf648004b34f98718301d718fa2darylm
18416a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OPADD   0   /* ORDER TM */
18516a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OPSUB   1
18616a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OPMUL   2
18716a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OPDIV   3
18816a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OPMOD   4
18916a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OPPOW   5
19016a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OPUNM   6
19116a5fed65808adf648004b34f98718301d718fa2darylm
19216a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_arith) (lua_State *L, int op);
19316a5fed65808adf648004b34f98718301d718fa2darylm
19416a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OPEQ    0
19516a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OPLT    1
19616a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_OPLE    2
19716a5fed65808adf648004b34f98718301d718fa2darylm
19816a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_rawequal) (lua_State *L, int idx1, int idx2);
19916a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_compare) (lua_State *L, int idx1, int idx2, int op);
20016a5fed65808adf648004b34f98718301d718fa2darylm
20116a5fed65808adf648004b34f98718301d718fa2darylm
20216a5fed65808adf648004b34f98718301d718fa2darylm/*
20316a5fed65808adf648004b34f98718301d718fa2darylm** push functions (C -> stack)
20416a5fed65808adf648004b34f98718301d718fa2darylm*/
20516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void        (lua_pushnil) (lua_State *L);
20616a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void        (lua_pushnumber) (lua_State *L, lua_Number n);
20716a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void        (lua_pushinteger) (lua_State *L, lua_Integer n);
20816a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void        (lua_pushunsigned) (lua_State *L, lua_Unsigned n);
20916a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t l);
21016a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const char *(lua_pushstring) (lua_State *L, const char *s);
21116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
21216a5fed65808adf648004b34f98718301d718fa2darylm                                                      va_list argp);
21316a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
21416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
21516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_pushboolean) (lua_State *L, int b);
21616a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_pushlightuserdata) (lua_State *L, void *p);
21716a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_pushthread) (lua_State *L);
21816a5fed65808adf648004b34f98718301d718fa2darylm
21916a5fed65808adf648004b34f98718301d718fa2darylm
22016a5fed65808adf648004b34f98718301d718fa2darylm/*
22116a5fed65808adf648004b34f98718301d718fa2darylm** get functions (Lua -> stack)
22216a5fed65808adf648004b34f98718301d718fa2darylm*/
22316a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_getglobal) (lua_State *L, const char *var);
22416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_gettable) (lua_State *L, int idx);
22516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_getfield) (lua_State *L, int idx, const char *k);
22616a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_rawget) (lua_State *L, int idx);
22716a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_rawgeti) (lua_State *L, int idx, int n);
22816a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_rawgetp) (lua_State *L, int idx, const void *p);
22916a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_createtable) (lua_State *L, int narr, int nrec);
23016a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void *(lua_newuserdata) (lua_State *L, size_t sz);
23116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_getmetatable) (lua_State *L, int objindex);
23216a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_getuservalue) (lua_State *L, int idx);
23316a5fed65808adf648004b34f98718301d718fa2darylm
23416a5fed65808adf648004b34f98718301d718fa2darylm
23516a5fed65808adf648004b34f98718301d718fa2darylm/*
23616a5fed65808adf648004b34f98718301d718fa2darylm** set functions (stack -> Lua)
23716a5fed65808adf648004b34f98718301d718fa2darylm*/
23816a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_setglobal) (lua_State *L, const char *var);
23916a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_settable) (lua_State *L, int idx);
24016a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_setfield) (lua_State *L, int idx, const char *k);
24116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_rawset) (lua_State *L, int idx);
24216a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_rawseti) (lua_State *L, int idx, int n);
24316a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_rawsetp) (lua_State *L, int idx, const void *p);
24416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
24516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_setuservalue) (lua_State *L, int idx);
24616a5fed65808adf648004b34f98718301d718fa2darylm
24716a5fed65808adf648004b34f98718301d718fa2darylm
24816a5fed65808adf648004b34f98718301d718fa2darylm/*
24916a5fed65808adf648004b34f98718301d718fa2darylm** 'load' and 'call' functions (load and run Lua code)
25016a5fed65808adf648004b34f98718301d718fa2darylm*/
25116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_callk) (lua_State *L, int nargs, int nresults, int ctx,
25216a5fed65808adf648004b34f98718301d718fa2darylm                           lua_CFunction k);
25316a5fed65808adf648004b34f98718301d718fa2darylm#define lua_call(L,n,r)     lua_callk(L, (n), (r), 0, NULL)
25416a5fed65808adf648004b34f98718301d718fa2darylm
25516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_getctx) (lua_State *L, int *ctx);
25616a5fed65808adf648004b34f98718301d718fa2darylm
25716a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
25816a5fed65808adf648004b34f98718301d718fa2darylm                            int ctx, lua_CFunction k);
25916a5fed65808adf648004b34f98718301d718fa2darylm#define lua_pcall(L,n,r,f)  lua_pcallk(L, (n), (r), (f), 0, NULL)
26016a5fed65808adf648004b34f98718301d718fa2darylm
26116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_load) (lua_State *L, lua_Reader reader, void *dt,
26216a5fed65808adf648004b34f98718301d718fa2darylm                                        const char *chunkname,
26316a5fed65808adf648004b34f98718301d718fa2darylm                                        const char *mode);
26416a5fed65808adf648004b34f98718301d718fa2darylm
26516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data);
26616a5fed65808adf648004b34f98718301d718fa2darylm
26716a5fed65808adf648004b34f98718301d718fa2darylm
26816a5fed65808adf648004b34f98718301d718fa2darylm/*
26916a5fed65808adf648004b34f98718301d718fa2darylm** coroutine functions
27016a5fed65808adf648004b34f98718301d718fa2darylm*/
27116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int  (lua_yieldk) (lua_State *L, int nresults, int ctx,
27216a5fed65808adf648004b34f98718301d718fa2darylm                           lua_CFunction k);
27316a5fed65808adf648004b34f98718301d718fa2darylm#define lua_yield(L,n)      lua_yieldk(L, (n), 0, NULL)
27416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int  (lua_resume) (lua_State *L, lua_State *from, int narg);
27516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int  (lua_status) (lua_State *L);
27616a5fed65808adf648004b34f98718301d718fa2darylm
27716a5fed65808adf648004b34f98718301d718fa2darylm/*
27816a5fed65808adf648004b34f98718301d718fa2darylm** garbage-collection function and options
27916a5fed65808adf648004b34f98718301d718fa2darylm*/
28016a5fed65808adf648004b34f98718301d718fa2darylm
28116a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCSTOP      0
28216a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCRESTART       1
28316a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCCOLLECT       2
28416a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCCOUNT     3
28516a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCCOUNTB        4
28616a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCSTEP      5
28716a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCSETPAUSE      6
28816a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCSETSTEPMUL    7
28916a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCSETMAJORINC   8
29016a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCISRUNNING     9
29116a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCGEN       10
29216a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_GCINC       11
29316a5fed65808adf648004b34f98718301d718fa2darylm
29416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int (lua_gc) (lua_State *L, int what, int data);
29516a5fed65808adf648004b34f98718301d718fa2darylm
29616a5fed65808adf648004b34f98718301d718fa2darylm
29716a5fed65808adf648004b34f98718301d718fa2darylm/*
29816a5fed65808adf648004b34f98718301d718fa2darylm** miscellaneous functions
29916a5fed65808adf648004b34f98718301d718fa2darylm*/
30016a5fed65808adf648004b34f98718301d718fa2darylm
30116a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int (lua_error) (lua_State *L);
30216a5fed65808adf648004b34f98718301d718fa2darylm
30316a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int   (lua_next) (lua_State *L, int idx);
30416a5fed65808adf648004b34f98718301d718fa2darylm
30516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_concat) (lua_State *L, int n);
30616a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_len)    (lua_State *L, int idx);
30716a5fed65808adf648004b34f98718301d718fa2darylm
30816a5fed65808adf648004b34f98718301d718fa2darylmLUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
30916a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void      (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
31016a5fed65808adf648004b34f98718301d718fa2darylm
31116a5fed65808adf648004b34f98718301d718fa2darylm
31216a5fed65808adf648004b34f98718301d718fa2darylm
31316a5fed65808adf648004b34f98718301d718fa2darylm/*
31416a5fed65808adf648004b34f98718301d718fa2darylm** ===============================================================
31516a5fed65808adf648004b34f98718301d718fa2darylm** some useful macros
31616a5fed65808adf648004b34f98718301d718fa2darylm** ===============================================================
31716a5fed65808adf648004b34f98718301d718fa2darylm*/
31816a5fed65808adf648004b34f98718301d718fa2darylm
31916a5fed65808adf648004b34f98718301d718fa2darylm#define lua_tonumber(L,i)   lua_tonumberx(L,i,NULL)
32016a5fed65808adf648004b34f98718301d718fa2darylm#define lua_tointeger(L,i)  lua_tointegerx(L,i,NULL)
32116a5fed65808adf648004b34f98718301d718fa2darylm#define lua_tounsigned(L,i) lua_tounsignedx(L,i,NULL)
32216a5fed65808adf648004b34f98718301d718fa2darylm
32316a5fed65808adf648004b34f98718301d718fa2darylm#define lua_pop(L,n)        lua_settop(L, -(n)-1)
32416a5fed65808adf648004b34f98718301d718fa2darylm
32516a5fed65808adf648004b34f98718301d718fa2darylm#define lua_newtable(L)     lua_createtable(L, 0, 0)
32616a5fed65808adf648004b34f98718301d718fa2darylm
32716a5fed65808adf648004b34f98718301d718fa2darylm#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
32816a5fed65808adf648004b34f98718301d718fa2darylm
32916a5fed65808adf648004b34f98718301d718fa2darylm#define lua_pushcfunction(L,f)  lua_pushcclosure(L, (f), 0)
33016a5fed65808adf648004b34f98718301d718fa2darylm
33116a5fed65808adf648004b34f98718301d718fa2darylm#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION)
33216a5fed65808adf648004b34f98718301d718fa2darylm#define lua_istable(L,n)    (lua_type(L, (n)) == LUA_TTABLE)
33316a5fed65808adf648004b34f98718301d718fa2darylm#define lua_islightuserdata(L,n)    (lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
33416a5fed65808adf648004b34f98718301d718fa2darylm#define lua_isnil(L,n)      (lua_type(L, (n)) == LUA_TNIL)
33516a5fed65808adf648004b34f98718301d718fa2darylm#define lua_isboolean(L,n)  (lua_type(L, (n)) == LUA_TBOOLEAN)
33616a5fed65808adf648004b34f98718301d718fa2darylm#define lua_isthread(L,n)   (lua_type(L, (n)) == LUA_TTHREAD)
33716a5fed65808adf648004b34f98718301d718fa2darylm#define lua_isnone(L,n)     (lua_type(L, (n)) == LUA_TNONE)
33816a5fed65808adf648004b34f98718301d718fa2darylm#define lua_isnoneornil(L, n)   (lua_type(L, (n)) <= 0)
33916a5fed65808adf648004b34f98718301d718fa2darylm
34016a5fed65808adf648004b34f98718301d718fa2darylm#define lua_pushliteral(L, s)   \
34116a5fed65808adf648004b34f98718301d718fa2darylm    lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1)
34216a5fed65808adf648004b34f98718301d718fa2darylm
34316a5fed65808adf648004b34f98718301d718fa2darylm#define lua_pushglobaltable(L)  \
34416a5fed65808adf648004b34f98718301d718fa2darylm    lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS)
34516a5fed65808adf648004b34f98718301d718fa2darylm
34616a5fed65808adf648004b34f98718301d718fa2darylm#define lua_tostring(L,i)   lua_tolstring(L, (i), NULL)
34716a5fed65808adf648004b34f98718301d718fa2darylm
34816a5fed65808adf648004b34f98718301d718fa2darylm
34916a5fed65808adf648004b34f98718301d718fa2darylm
35016a5fed65808adf648004b34f98718301d718fa2darylm/*
35116a5fed65808adf648004b34f98718301d718fa2darylm** {======================================================================
35216a5fed65808adf648004b34f98718301d718fa2darylm** Debug API
35316a5fed65808adf648004b34f98718301d718fa2darylm** =======================================================================
35416a5fed65808adf648004b34f98718301d718fa2darylm*/
35516a5fed65808adf648004b34f98718301d718fa2darylm
35616a5fed65808adf648004b34f98718301d718fa2darylm
35716a5fed65808adf648004b34f98718301d718fa2darylm/*
35816a5fed65808adf648004b34f98718301d718fa2darylm** Event codes
35916a5fed65808adf648004b34f98718301d718fa2darylm*/
36016a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_HOOKCALL    0
36116a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_HOOKRET 1
36216a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_HOOKLINE    2
36316a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_HOOKCOUNT   3
36416a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_HOOKTAILCALL 4
36516a5fed65808adf648004b34f98718301d718fa2darylm
36616a5fed65808adf648004b34f98718301d718fa2darylm
36716a5fed65808adf648004b34f98718301d718fa2darylm/*
36816a5fed65808adf648004b34f98718301d718fa2darylm** Event masks
36916a5fed65808adf648004b34f98718301d718fa2darylm*/
37016a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_MASKCALL    (1 << LUA_HOOKCALL)
37116a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_MASKRET (1 << LUA_HOOKRET)
37216a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_MASKLINE    (1 << LUA_HOOKLINE)
37316a5fed65808adf648004b34f98718301d718fa2darylm#define LUA_MASKCOUNT   (1 << LUA_HOOKCOUNT)
37416a5fed65808adf648004b34f98718301d718fa2darylm
37516a5fed65808adf648004b34f98718301d718fa2darylmtypedef struct lua_Debug lua_Debug;  /* activation record */
37616a5fed65808adf648004b34f98718301d718fa2darylm
37716a5fed65808adf648004b34f98718301d718fa2darylm
37816a5fed65808adf648004b34f98718301d718fa2darylm/* Functions to be called by the debugger in specific events */
37916a5fed65808adf648004b34f98718301d718fa2darylmtypedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
38016a5fed65808adf648004b34f98718301d718fa2darylm
38116a5fed65808adf648004b34f98718301d718fa2darylm
38216a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar);
38316a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar);
38416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n);
38516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n);
38616a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n);
38716a5fed65808adf648004b34f98718301d718fa2darylmLUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n);
38816a5fed65808adf648004b34f98718301d718fa2darylm
38916a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n);
39016a5fed65808adf648004b34f98718301d718fa2darylmLUA_API void  (lua_upvaluejoin) (lua_State *L, int fidx1, int n1,
39116a5fed65808adf648004b34f98718301d718fa2darylm                                               int fidx2, int n2);
39216a5fed65808adf648004b34f98718301d718fa2darylm
39316a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count);
39416a5fed65808adf648004b34f98718301d718fa2darylmLUA_API lua_Hook (lua_gethook) (lua_State *L);
39516a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int (lua_gethookmask) (lua_State *L);
39616a5fed65808adf648004b34f98718301d718fa2darylmLUA_API int (lua_gethookcount) (lua_State *L);
39716a5fed65808adf648004b34f98718301d718fa2darylm
39816a5fed65808adf648004b34f98718301d718fa2darylm
39916a5fed65808adf648004b34f98718301d718fa2darylmstruct lua_Debug {
40016a5fed65808adf648004b34f98718301d718fa2darylm  int event;
40116a5fed65808adf648004b34f98718301d718fa2darylm  const char *name; /* (n) */
40216a5fed65808adf648004b34f98718301d718fa2darylm  const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */
40316a5fed65808adf648004b34f98718301d718fa2darylm  const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */
40416a5fed65808adf648004b34f98718301d718fa2darylm  const char *source;   /* (S) */
40516a5fed65808adf648004b34f98718301d718fa2darylm  int currentline;  /* (l) */
40616a5fed65808adf648004b34f98718301d718fa2darylm  int linedefined;  /* (S) */
40716a5fed65808adf648004b34f98718301d718fa2darylm  int lastlinedefined;  /* (S) */
40816a5fed65808adf648004b34f98718301d718fa2darylm  unsigned char nups;   /* (u) number of upvalues */
40916a5fed65808adf648004b34f98718301d718fa2darylm  unsigned char nparams;/* (u) number of parameters */
41016a5fed65808adf648004b34f98718301d718fa2darylm  char isvararg;        /* (u) */
41116a5fed65808adf648004b34f98718301d718fa2darylm  char istailcall;  /* (t) */
41216a5fed65808adf648004b34f98718301d718fa2darylm  char short_src[LUA_IDSIZE]; /* (S) */
41316a5fed65808adf648004b34f98718301d718fa2darylm  /* private part */
41416a5fed65808adf648004b34f98718301d718fa2darylm  struct CallInfo *i_ci;  /* active function */
41516a5fed65808adf648004b34f98718301d718fa2darylm};
41616a5fed65808adf648004b34f98718301d718fa2darylm
41716a5fed65808adf648004b34f98718301d718fa2darylm/* }====================================================================== */
41816a5fed65808adf648004b34f98718301d718fa2darylm
41916a5fed65808adf648004b34f98718301d718fa2darylm
42016a5fed65808adf648004b34f98718301d718fa2darylm/******************************************************************************
42116a5fed65808adf648004b34f98718301d718fa2darylm* Copyright (C) 1994-2013 Lua.org, PUC-Rio.
42216a5fed65808adf648004b34f98718301d718fa2darylm*
42316a5fed65808adf648004b34f98718301d718fa2darylm* Permission is hereby granted, free of charge, to any person obtaining
42416a5fed65808adf648004b34f98718301d718fa2darylm* a copy of this software and associated documentation files (the
42516a5fed65808adf648004b34f98718301d718fa2darylm* "Software"), to deal in the Software without restriction, including
42616a5fed65808adf648004b34f98718301d718fa2darylm* without limitation the rights to use, copy, modify, merge, publish,
42716a5fed65808adf648004b34f98718301d718fa2darylm* distribute, sublicense, and/or sell copies of the Software, and to
42816a5fed65808adf648004b34f98718301d718fa2darylm* permit persons to whom the Software is furnished to do so, subject to
42916a5fed65808adf648004b34f98718301d718fa2darylm* the following conditions:
43016a5fed65808adf648004b34f98718301d718fa2darylm*
43116a5fed65808adf648004b34f98718301d718fa2darylm* The above copyright notice and this permission notice shall be
43216a5fed65808adf648004b34f98718301d718fa2darylm* included in all copies or substantial portions of the Software.
43316a5fed65808adf648004b34f98718301d718fa2darylm*
43416a5fed65808adf648004b34f98718301d718fa2darylm* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
43516a5fed65808adf648004b34f98718301d718fa2darylm* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
43616a5fed65808adf648004b34f98718301d718fa2darylm* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
43716a5fed65808adf648004b34f98718301d718fa2darylm* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
43816a5fed65808adf648004b34f98718301d718fa2darylm* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
43916a5fed65808adf648004b34f98718301d718fa2darylm* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
44016a5fed65808adf648004b34f98718301d718fa2darylm* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
44116a5fed65808adf648004b34f98718301d718fa2darylm******************************************************************************/
44216a5fed65808adf648004b34f98718301d718fa2darylm
44316a5fed65808adf648004b34f98718301d718fa2darylm
44416a5fed65808adf648004b34f98718301d718fa2darylm#endif
445