/* ** $Id: fallback.h,v 1.22 1997/04/04 22:24:51 roberto Exp roberto $ */ #ifndef fallback_h #define fallback_h #include "lua.h" #include "opcode.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_LE, IM_GT, IM_GE, IM_CONCAT, IM_GC, IM_FUNCTION } IMS; #define IM_N 18 extern struct IM { TObject int_method[IM_N]; } *luaI_IMtable; extern char *luaI_eventname[]; #define luaI_getim(tag,event) (&luaI_IMtable[-(tag)].int_method[event]) #define luaI_getimbyObj(o,e) (luaI_getim(luaI_efectivetag(o),(e))) void luaI_setfallback (void); int luaI_ref (TObject *object, int lock); TObject *luaI_getref (int ref); void luaI_travlock (int (*fn)(TObject *)); void luaI_invalidaterefs (void); char *luaI_travfallbacks (int (*fn)(TObject *)); void luaI_settag (int tag, TObject *o); void luaI_realtag (int tag); TObject *luaI_geterrorim (void); int luaI_efectivetag (TObject *o); void luaI_settagmethod (void); void luaI_gettagmethod (void); void luaI_seterrormethod (void); void luaI_initfallbacks (void); #endif