/* ** $Id: ltm.h,v 1.14 2000/08/07 20:21:34 roberto Exp roberto $ ** Tag methods ** See Copyright Notice in lua.h */ #ifndef ltm_h #define ltm_h #include "lobject.h" #include "lstate.h" /* * WARNING: if you change the order of this enumeration, * grep "ORDER IM" */ typedef enum { IM_GETTABLE = 0, IM_SETTABLE, IM_INDEX, IM_GETGLOBAL, IM_SETGLOBAL, IM_ADD, IM_SUB, IM_MUL, IM_DIV, IM_POW, IM_UNM, IM_LT, IM_CONCAT, IM_GC, IM_FUNCTION, IM_N /* number of elements in the enum */ } IMS; struct IM { TObject int_method[IM_N]; TString *collected; /* list of G. collected udata with this tag */ }; #define luaT_getim(L,tag,event) (&L->IMtable[tag].int_method[event]) #define luaT_getimbyObj(L,o,e) (luaT_getim(L, luaT_effectivetag(L, o),(e))) extern const char *const luaT_eventname[]; void luaT_init (lua_State *L); void luaT_realtag (lua_State *L, int tag); int luaT_effectivetag (lua_State *L, const TObject *o); int luaT_validevent (int t, int e); /* used by compatibility module */ #endif