summaryrefslogtreecommitdiff
path: root/lapi.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-01-19 10:00:45 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-01-19 10:00:45 -0200
commit2877bad4c260d11c22c3b12e633d6b1ca3415789 (patch)
tree2109684c4521c34b584bfd24e0eae05688c7fc32 /lapi.c
parent27163f032eed6b851b98a0ab67b1387d701e61c0 (diff)
downloadlua-2877bad4c260d11c22c3b12e633d6b1ca3415789.tar.gz
lua-2877bad4c260d11c22c3b12e633d6b1ca3415789.tar.bz2
lua-2877bad4c260d11c22c3b12e633d6b1ca3415789.zip
new debug API (first version)
Diffstat (limited to 'lapi.c')
-rw-r--r--lapi.c32
1 files changed, 5 insertions, 27 deletions
diff --git a/lapi.c b/lapi.c
index 72df1a2a..85ac9328 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lapi.c,v 1.67 1999/12/30 18:27:03 roberto Exp roberto $ 2** $Id: lapi.c,v 1.68 2000/01/13 15:56:03 roberto Exp roberto $
3** Lua API 3** Lua API
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -30,29 +30,12 @@ const char lua_ident[] = "$Lua: " LUA_VERSION " " LUA_COPYRIGHT " $\n"
30 30
31 31
32 32
33const lua_Type luaA_normtype[] = { /* ORDER LUA_T */
34 LUA_T_USERDATA, LUA_T_NUMBER, LUA_T_STRING, LUA_T_ARRAY,
35 LUA_T_LPROTO, LUA_T_CPROTO, LUA_T_NIL,
36 LUA_T_LCLOSURE, LUA_T_CCLOSURE,
37 LUA_T_LCLOSURE, LUA_T_CCLOSURE, /* LUA_T_LCLMARK, LUA_T_CCLMARK */
38 LUA_T_LPROTO, LUA_T_CPROTO /* LUA_T_LMARK, LUA_T_CMARK */
39};
40
41
42void luaA_setnormalized (TObject *d, const TObject *s) {
43 d->value = s->value;
44 d->ttype = luaA_normalizedtype(s);
45}
46
47 33
48const TObject *luaA_protovalue (const TObject *o) { 34const TObject *luaA_protovalue (const TObject *o) {
49 switch (luaA_normalizedtype(o)) { 35 switch (ttype(o)) {
50 case LUA_T_CCLOSURE: case LUA_T_LCLOSURE: 36 case LUA_T_CCLOSURE: case LUA_T_LCLOSURE:
51 return protovalue(o); 37 return protovalue(o);
52 default: 38 default:
53 LUA_ASSERT(L, luaA_normalizedtype(o) == LUA_T_LPROTO ||
54 luaA_normalizedtype(o) == LUA_T_CPROTO,
55 "invalid `function'");
56 return o; 39 return o;
57 } 40 }
58} 41}
@@ -107,7 +90,7 @@ int lua_callfunction (lua_State *L, lua_Object function) {
107 return 1; 90 return 1;
108 else { 91 else {
109 luaD_openstack(L, L->Cstack.base); 92 luaD_openstack(L, L->Cstack.base);
110 luaA_setnormalized(L->Cstack.base, function); 93 *L->Cstack.base = *function;
111 return luaD_protectedrun(L); 94 return luaD_protectedrun(L);
112 } 95 }
113} 96}
@@ -248,12 +231,7 @@ int lua_equal(lua_State *L, lua_Object o1, lua_Object o2) {
248 UNUSED(L); 231 UNUSED(L);
249 if (o1 == LUA_NOOBJECT || o2 == LUA_NOOBJECT) 232 if (o1 == LUA_NOOBJECT || o2 == LUA_NOOBJECT)
250 return (o1 == o2); 233 return (o1 == o2);
251 else { 234 else return luaO_equalObj(o1, o2);
252 TObject obj1, obj2;
253 luaA_setnormalized(&obj1, o1);
254 luaA_setnormalized(&obj2, o2);
255 return luaO_equalObj(&obj1, &obj2);
256 }
257} 235}
258 236
259 237
@@ -344,7 +322,7 @@ void luaA_pushobject (lua_State *L, const TObject *o) {
344void lua_pushobject (lua_State *L, lua_Object o) { 322void lua_pushobject (lua_State *L, lua_Object o) {
345 if (o == LUA_NOOBJECT) 323 if (o == LUA_NOOBJECT)
346 lua_error(L, "API error - attempt to push a NOOBJECT"); 324 lua_error(L, "API error - attempt to push a NOOBJECT");
347 luaA_setnormalized(L->top, o); 325 *L->top = *o;
348 incr_top; 326 incr_top;
349} 327}
350 328