diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-12-23 16:19:57 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-12-23 16:19:57 -0200 |
| commit | b1b0c219f5255a0cd0921ebc0a77a81f99b72532 (patch) | |
| tree | 7cb4d9cbbdb1309b94794eb75694b02f2b08f75a /lobject.c | |
| parent | be3212de781786c0a68365dee1d3510407b5c325 (diff) | |
| download | lua-b1b0c219f5255a0cd0921ebc0a77a81f99b72532.tar.gz lua-b1b0c219f5255a0cd0921ebc0a77a81f99b72532.tar.bz2 lua-b1b0c219f5255a0cd0921ebc0a77a81f99b72532.zip | |
new ttypes to distinguish between C closures and Lua closures.
Diffstat (limited to 'lobject.c')
| -rw-r--r-- | lobject.c | 28 |
1 files changed, 18 insertions, 10 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lobject.c,v 1.26 1999/11/26 18:59:20 roberto Exp roberto $ | 2 | ** $Id: lobject.c,v 1.27 1999/12/14 18:31:20 roberto Exp roberto $ |
| 3 | ** Some generic functions over Lua objects | 3 | ** Some generic functions over Lua objects |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -14,8 +14,9 @@ | |||
| 14 | 14 | ||
| 15 | 15 | ||
| 16 | const char *const luaO_typenames[] = { /* ORDER LUA_T */ | 16 | const char *const luaO_typenames[] = { /* ORDER LUA_T */ |
| 17 | "userdata", "number", "string", "table", "function", "function", | 17 | "userdata", "number", "string", "table", "function", "function", "nil", |
| 18 | "nil", "function", "mark", "mark", "mark", "line", NULL | 18 | "function", "function", "function", "function", "function", "function", |
| 19 | "line", NULL | ||
| 19 | }; | 20 | }; |
| 20 | 21 | ||
| 21 | 22 | ||
| @@ -34,13 +35,20 @@ unsigned long luaO_power2 (unsigned long n) { | |||
| 34 | 35 | ||
| 35 | int luaO_equalval (const TObject *t1, const TObject *t2) { | 36 | int luaO_equalval (const TObject *t1, const TObject *t2) { |
| 36 | switch (ttype(t1)) { | 37 | switch (ttype(t1)) { |
| 37 | case LUA_T_NIL: return 1; | 38 | case LUA_T_NIL: |
| 38 | case LUA_T_NUMBER: return nvalue(t1) == nvalue(t2); | 39 | return 1; |
| 39 | case LUA_T_STRING: case LUA_T_USERDATA: return svalue(t1) == svalue(t2); | 40 | case LUA_T_NUMBER: |
| 40 | case LUA_T_ARRAY: return avalue(t1) == avalue(t2); | 41 | return nvalue(t1) == nvalue(t2); |
| 41 | case LUA_T_PROTO: return tfvalue(t1) == tfvalue(t2); | 42 | case LUA_T_STRING: case LUA_T_USERDATA: |
| 42 | case LUA_T_CPROTO: return fvalue(t1) == fvalue(t2); | 43 | return svalue(t1) == svalue(t2); |
| 43 | case LUA_T_CLOSURE: return t1->value.cl == t2->value.cl; | 44 | case LUA_T_ARRAY: |
| 45 | return avalue(t1) == avalue(t2); | ||
| 46 | case LUA_T_LPROTO: | ||
| 47 | return tfvalue(t1) == tfvalue(t2); | ||
| 48 | case LUA_T_CPROTO: | ||
| 49 | return fvalue(t1) == fvalue(t2); | ||
| 50 | case LUA_T_CCLOSURE: case LUA_T_LCLOSURE: | ||
| 51 | return t1->value.cl == t2->value.cl; | ||
| 44 | default: | 52 | default: |
| 45 | LUA_INTERNALERROR(L, "invalid type"); | 53 | LUA_INTERNALERROR(L, "invalid type"); |
| 46 | return 0; /* UNREACHABLE */ | 54 | return 0; /* UNREACHABLE */ |
