mirror of
https://github.com/lua/lua
synced 2024-11-25 06:09:36 +03:00
063d4e4543
This is the first commit for the branch Lua 5.3. All source files were copied from the official distribution of 5.3.5 in the Lua site. The test files are the same of 5.3.4. The manual came from the previous RCS repository, revision 1.167.1.2.
77 lines
1.7 KiB
C
77 lines
1.7 KiB
C
/*
|
|
** $Id: ltm.h,v 2.22.1.1 2017/04/19 17:20:42 roberto Exp $
|
|
** Tag methods
|
|
** See Copyright Notice in lua.h
|
|
*/
|
|
|
|
#ifndef ltm_h
|
|
#define ltm_h
|
|
|
|
|
|
#include "lobject.h"
|
|
|
|
|
|
/*
|
|
* WARNING: if you change the order of this enumeration,
|
|
* grep "ORDER TM" and "ORDER OP"
|
|
*/
|
|
typedef enum {
|
|
TM_INDEX,
|
|
TM_NEWINDEX,
|
|
TM_GC,
|
|
TM_MODE,
|
|
TM_LEN,
|
|
TM_EQ, /* last tag method with fast access */
|
|
TM_ADD,
|
|
TM_SUB,
|
|
TM_MUL,
|
|
TM_MOD,
|
|
TM_POW,
|
|
TM_DIV,
|
|
TM_IDIV,
|
|
TM_BAND,
|
|
TM_BOR,
|
|
TM_BXOR,
|
|
TM_SHL,
|
|
TM_SHR,
|
|
TM_UNM,
|
|
TM_BNOT,
|
|
TM_LT,
|
|
TM_LE,
|
|
TM_CONCAT,
|
|
TM_CALL,
|
|
TM_N /* number of elements in the enum */
|
|
} TMS;
|
|
|
|
|
|
|
|
#define gfasttm(g,et,e) ((et) == NULL ? NULL : \
|
|
((et)->flags & (1u<<(e))) ? NULL : luaT_gettm(et, e, (g)->tmname[e]))
|
|
|
|
#define fasttm(l,et,e) gfasttm(G(l), et, e)
|
|
|
|
#define ttypename(x) luaT_typenames_[(x) + 1]
|
|
|
|
LUAI_DDEC const char *const luaT_typenames_[LUA_TOTALTAGS];
|
|
|
|
|
|
LUAI_FUNC const char *luaT_objtypename (lua_State *L, const TValue *o);
|
|
|
|
LUAI_FUNC const TValue *luaT_gettm (Table *events, TMS event, TString *ename);
|
|
LUAI_FUNC const TValue *luaT_gettmbyobj (lua_State *L, const TValue *o,
|
|
TMS event);
|
|
LUAI_FUNC void luaT_init (lua_State *L);
|
|
|
|
LUAI_FUNC void luaT_callTM (lua_State *L, const TValue *f, const TValue *p1,
|
|
const TValue *p2, TValue *p3, int hasres);
|
|
LUAI_FUNC int luaT_callbinTM (lua_State *L, const TValue *p1, const TValue *p2,
|
|
StkId res, TMS event);
|
|
LUAI_FUNC void luaT_trybinTM (lua_State *L, const TValue *p1, const TValue *p2,
|
|
StkId res, TMS event);
|
|
LUAI_FUNC int luaT_callorderTM (lua_State *L, const TValue *p1,
|
|
const TValue *p2, TMS event);
|
|
|
|
|
|
|
|
#endif
|