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