diff options
author | pixel <pixel> | 2003-12-11 16:53:27 +0000 |
---|---|---|
committer | pixel <pixel> | 2003-12-11 16:53:27 +0000 |
commit | 9a5eedd11cc043fd09c96d57eb901fb85fc1655d (patch) | |
tree | 5e9c23c8470c4f2d033adcec0f96e86327d8a824 /lib/lua/src/ltm.c | |
parent | d0e8204e8917d189c7365c03af473e18766cc637 (diff) |
Linux ports
Diffstat (limited to 'lib/lua/src/ltm.c')
-rw-r--r-- | lib/lua/src/ltm.c | 140 |
1 files changed, 70 insertions, 70 deletions
diff --git a/lib/lua/src/ltm.c b/lib/lua/src/ltm.c index e7016c8..9ffe7b2 100644 --- a/lib/lua/src/ltm.c +++ b/lib/lua/src/ltm.c @@ -1,70 +1,70 @@ -/*
-** $Id: ltm.c,v 1.1 2003-11-06 11:56:07 pixel Exp $
-** Tag methods
-** See Copyright Notice in lua.h
-*/
-
-
-#include <string.h>
-
-#define ltm_c
-
-#include "lua.h"
-
-#include "lobject.h"
-#include "lstate.h"
-#include "lstring.h"
-#include "ltable.h"
-#include "ltm.h"
-
-
-
-const char *const luaT_typenames[] = {
- "nil", "boolean", "userdata", "number",
- "string", "table", "function", "userdata", "thread"
-};
-
-
-void luaT_init (lua_State *L) {
- static const char *const luaT_eventname[] = { /* ORDER TM */
- "__index", "__newindex",
- "__gc", "__mode", "__eq",
- "__add", "__sub", "__mul", "__div",
- "__pow", "__unm", "__lt", "__le",
- "__concat", "__call"
- };
- int i;
- for (i=0; i<TM_N; i++) {
- G(L)->tmname[i] = luaS_new(L, luaT_eventname[i]);
- luaS_fix(G(L)->tmname[i]); /* never collect these names */
- }
-}
-
-
-/*
-** function to be used with macro "fasttm": optimized for absence of
-** tag methods
-*/
-const TObject *luaT_gettm (Table *events, TMS event, TString *ename) {
- const TObject *tm = luaH_getstr(events, ename);
- lua_assert(event <= TM_EQ);
- if (ttisnil(tm)) { /* no tag method? */
- events->flags |= cast(lu_byte, 1u<<event); /* cache this fact */
- return NULL;
- }
- else return tm;
-}
-
-
-const TObject *luaT_gettmbyobj (lua_State *L, const TObject *o, TMS event) {
- TString *ename = G(L)->tmname[event];
- switch (ttype(o)) {
- case LUA_TTABLE:
- return luaH_getstr(hvalue(o)->metatable, ename);
- case LUA_TUSERDATA:
- return luaH_getstr(uvalue(o)->uv.metatable, ename);
- default:
- return &luaO_nilobject;
- }
-}
-
+/* +** $Id: ltm.c,v 1.2 2003-12-11 16:53:30 pixel Exp $ +** Tag methods +** See Copyright Notice in lua.h +*/ + + +#include <string.h> + +#define ltm_c + +#include "lua.h" + +#include "lobject.h" +#include "lstate.h" +#include "lstring.h" +#include "ltable.h" +#include "ltm.h" + + + +const char *const luaT_typenames[] = { + "nil", "boolean", "userdata", "number", + "string", "table", "function", "userdata", "thread" +}; + + +void luaT_init (lua_State *L) { + static const char *const luaT_eventname[] = { /* ORDER TM */ + "__index", "__newindex", + "__gc", "__mode", "__eq", + "__add", "__sub", "__mul", "__div", + "__pow", "__unm", "__lt", "__le", + "__concat", "__call" + }; + int i; + for (i=0; i<TM_N; i++) { + G(L)->tmname[i] = luaS_new(L, luaT_eventname[i]); + luaS_fix(G(L)->tmname[i]); /* never collect these names */ + } +} + + +/* +** function to be used with macro "fasttm": optimized for absence of +** tag methods +*/ +const TObject *luaT_gettm (Table *events, TMS event, TString *ename) { + const TObject *tm = luaH_getstr(events, ename); + lua_assert(event <= TM_EQ); + if (ttisnil(tm)) { /* no tag method? */ + events->flags |= cast(lu_byte, 1u<<event); /* cache this fact */ + return NULL; + } + else return tm; +} + + +const TObject *luaT_gettmbyobj (lua_State *L, const TObject *o, TMS event) { + TString *ename = G(L)->tmname[event]; + switch (ttype(o)) { + case LUA_TTABLE: + return luaH_getstr(hvalue(o)->metatable, ename); + case LUA_TUSERDATA: + return luaH_getstr(uvalue(o)->uv.metatable, ename); + default: + return &luaO_nilobject; + } +} + |