1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*
- ** $Id: lstate.h,v 1.30 2000/03/10 18:37:44 roberto Exp roberto $
- ** Global State
- ** See Copyright Notice in lua.h
- */
- #ifndef lstate_h
- #define lstate_h
- #include <setjmp.h>
- #include "lobject.h"
- #include "lua.h"
- #include "luadebug.h"
- typedef TObject *StkId; /* index to stack elements */
- /*
- ** `jmp_buf' may be an array, so it is better to make sure it has an
- ** address (and not that it *is* an address...)
- */
- struct lua_longjmp {
- jmp_buf b;
- };
- /*
- ** stack layout for C point of view:
- ** [lua2C, lua2C+num) - `array' lua2C
- ** [lua2C+num, base) - space for extra lua_Objects (limbo)
- ** [base, L->top) - `stack' C2Lua
- */
- struct C_Lua_Stack {
- StkId base;
- StkId lua2C;
- int num;
- };
- typedef struct stringtable {
- int size;
- int nuse; /* number of elements (including EMPTYs) */
- TString **hash;
- } stringtable;
- struct lua_State {
- /* thread-specific state */
- StkId top; /* first free slot in the stack */
- StkId stack; /* stack base */
- StkId stack_last; /* last free slot in the stack */
- int stacksize;
- struct C_Lua_Stack Cstack; /* C2lua struct */
- struct lua_longjmp *errorJmp; /* current error recover point */
- char *Mbuffer; /* global buffer */
- int Mbuffbase; /* current first position of Mbuffer */
- int Mbuffsize; /* size of Mbuffer */
- int Mbuffnext; /* next position to fill in Mbuffer */
- struct C_Lua_Stack *Cblocks;
- int numCblocks; /* number of nested Cblocks */
- /* global state */
- Proto *rootproto; /* list of all prototypes */
- Closure *rootcl; /* list of all closures */
- Hash *roottable; /* list of all tables */
- GlobalVar *rootglobal; /* list of global variables */
- stringtable *string_root; /* array of hash tables for strings and udata */
- struct IM *IMtable; /* table for tag methods */
- int last_tag; /* last used tag in IMtable */
- struct Ref *refArray; /* locked objects */
- int refSize; /* size of refArray */
- int refFree; /* list of free positions in refArray */
- unsigned long GCthreshold;
- unsigned long nblocks; /* number of `blocks' currently allocated */
- int debug;
- lua_Hook callhook;
- lua_Hook linehook;
- int allowhooks;
- };
- #endif
|