4 ** See Copyright Notice in lua.h
15 * WARNING: if you change the order of this enumeration,
16 * grep "ORDER TM" and "ORDER OP"
24 TM_EQ
, /* last tag method with fast access */
44 TM_N
/* number of elements in the enum */
49 ** Mask with 1 in all fast-access methods. A 1 in any of these bits
50 ** in the flag of a (meta)table means the metatable does not have the
51 ** corresponding metamethod field. (Bit 7 of the flag is used for
54 #define maskflags (~(~0u << (TM_EQ + 1)))
58 ** Test whether there is no tagmethod.
59 ** (Because tagmethods use raw accesses, the result may be an "empty" nil.)
61 #define notm(tm) ttisnil(tm)
64 #define gfasttm(g,et,e) ((et) == NULL ? NULL : \
65 ((et)->flags & (1u<<(e))) ? NULL : luaT_gettm(et, e, (g)->tmname[e]))
67 #define fasttm(l,et,e) gfasttm(G(l), et, e)
69 #define ttypename(x) luaT_typenames_[(x) + 1]
71 LUAI_DDEC(const char *const luaT_typenames_
[LUA_TOTALTYPES
];)
74 LUAI_FUNC
const char *luaT_objtypename(lua_State
*L
, const TValue
*o
);
76 LUAI_FUNC
const TValue
*luaT_gettm(Table
*events
, TMS event
, TString
*ename
);
77 LUAI_FUNC
const TValue
*luaT_gettmbyobj(lua_State
*L
, const TValue
*o
,
79 LUAI_FUNC
void luaT_init(lua_State
*L
);
81 LUAI_FUNC
void luaT_callTM(lua_State
*L
, const TValue
*f
, const TValue
*p1
,
82 const TValue
*p2
, const TValue
*p3
);
83 LUAI_FUNC
void luaT_callTMres(lua_State
*L
, const TValue
*f
,
84 const TValue
*p1
, const TValue
*p2
, StkId p3
);
85 LUAI_FUNC
void luaT_trybinTM(lua_State
*L
, const TValue
*p1
, const TValue
*p2
,
86 StkId res
, TMS event
);
87 LUAI_FUNC
void luaT_tryconcatTM(lua_State
*L
);
88 LUAI_FUNC
void luaT_trybinassocTM(lua_State
*L
, const TValue
*p1
,
89 const TValue
*p2
, int inv
, StkId res
, TMS event
);
90 LUAI_FUNC
void luaT_trybiniTM(lua_State
*L
, const TValue
*p1
, lua_Integer i2
,
91 int inv
, StkId res
, TMS event
);
92 LUAI_FUNC
int luaT_callorderTM(lua_State
*L
, const TValue
*p1
,
93 const TValue
*p2
, TMS event
);
94 LUAI_FUNC
int luaT_callorderiTM(lua_State
*L
, const TValue
*p1
, int v2
,
95 int inv
, int isfloat
, TMS event
);
97 LUAI_FUNC
void luaT_adjustvarargs(lua_State
*L
, int nfixparams
,
98 struct CallInfo
*ci
, const Proto
*p
);
99 LUAI_FUNC
void luaT_getvarargs(lua_State
*L
, struct CallInfo
*ci
,
100 StkId where
, int wanted
);