Imported from ../lua-3.0.tar.gz.
[lua.git] / src / fallback.h
blob7e314c9fe02f7064ee7bbc59989a72ad42090055
1 /*
2 ** $Id: fallback.h,v 1.23 1997/04/24 22:59:57 roberto Exp $
3 */
5 #ifndef fallback_h
6 #define fallback_h
8 #include "lua.h"
9 #include "opcode.h"
12 * WARNING: if you change the order of this enumeration,
13 * grep "ORDER IM"
15 typedef enum {
16 IM_GETTABLE = 0,
17 IM_SETTABLE,
18 IM_INDEX,
19 IM_GETGLOBAL,
20 IM_SETGLOBAL,
21 IM_ADD,
22 IM_SUB,
23 IM_MUL,
24 IM_DIV,
25 IM_POW,
26 IM_UNM,
27 IM_LT,
28 IM_LE,
29 IM_GT,
30 IM_GE,
31 IM_CONCAT,
32 IM_GC,
33 IM_FUNCTION
34 } IMS;
36 #define IM_N 18
39 extern struct IM {
40 TObject int_method[IM_N];
41 } *luaI_IMtable;
43 extern char *luaI_eventname[];
45 #define luaI_getim(tag,event) (&luaI_IMtable[-(tag)].int_method[event])
46 #define luaI_getimbyObj(o,e) (luaI_getim(luaI_efectivetag(o),(e)))
48 void luaI_setfallback (void);
49 int luaI_ref (TObject *object, int lock);
50 TObject *luaI_getref (int ref);
51 void luaI_travlock (int (*fn)(TObject *));
52 void luaI_invalidaterefs (void);
53 char *luaI_travfallbacks (int (*fn)(TObject *));
55 void luaI_settag (int tag, TObject *o);
56 void luaI_realtag (int tag);
57 TObject *luaI_geterrorim (void);
58 int luaI_efectivetag (TObject *o);
59 void luaI_settagmethod (void);
60 void luaI_gettagmethod (void);
61 void luaI_seterrormethod (void);
62 void luaI_initfallbacks (void);
64 #endif