aboutsummaryrefslogtreecommitdiff
path: root/lobject.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-12-23 16:19:57 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-12-23 16:19:57 -0200
commitb1b0c219f5255a0cd0921ebc0a77a81f99b72532 (patch)
tree7cb4d9cbbdb1309b94794eb75694b02f2b08f75a /lobject.c
parentbe3212de781786c0a68365dee1d3510407b5c325 (diff)
downloadlua-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.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/lobject.c b/lobject.c
index b8b9247e..e55d9694 100644
--- a/lobject.c
+++ b/lobject.c
@@ -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
16const char *const luaO_typenames[] = { /* ORDER LUA_T */ 16const 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
35int luaO_equalval (const TObject *t1, const TObject *t2) { 36int 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 */