diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-01-19 10:00:45 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-01-19 10:00:45 -0200 |
commit | 2877bad4c260d11c22c3b12e633d6b1ca3415789 (patch) | |
tree | 2109684c4521c34b584bfd24e0eae05688c7fc32 /lapi.c | |
parent | 27163f032eed6b851b98a0ab67b1387d701e61c0 (diff) | |
download | lua-2877bad4c260d11c22c3b12e633d6b1ca3415789.tar.gz lua-2877bad4c260d11c22c3b12e633d6b1ca3415789.tar.bz2 lua-2877bad4c260d11c22c3b12e633d6b1ca3415789.zip |
new debug API (first version)
Diffstat (limited to 'lapi.c')
-rw-r--r-- | lapi.c | 32 |
1 files changed, 5 insertions, 27 deletions
@@ -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 | ||
33 | const 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 | |||
42 | void luaA_setnormalized (TObject *d, const TObject *s) { | ||
43 | d->value = s->value; | ||
44 | d->ttype = luaA_normalizedtype(s); | ||
45 | } | ||
46 | |||
47 | 33 | ||
48 | const TObject *luaA_protovalue (const TObject *o) { | 34 | const 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) { | |||
344 | void lua_pushobject (lua_State *L, lua_Object o) { | 322 | void 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 | ||