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