diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-09-26 12:02:26 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-09-26 12:02:26 -0300 |
commit | a580480b07cdf7201306b246deeb2fe84f2c25a9 (patch) | |
tree | 30e9d4798228156eea5be2589834f1ff2db4355e /lapi.c | |
parent | 0dd6d1080e7f58eb17cb8a2ad3fc5801ed7c0532 (diff) | |
download | lua-a580480b07cdf7201306b246deeb2fe84f2c25a9.tar.gz lua-a580480b07cdf7201306b246deeb2fe84f2c25a9.tar.bz2 lua-a580480b07cdf7201306b246deeb2fe84f2c25a9.zip |
new implementation for globals: Global value is stored in TaggedString
Diffstat (limited to 'lapi.c')
-rw-r--r-- | lapi.c | 22 |
1 files changed, 11 insertions, 11 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lapi.c,v 1.1 1997/08/14 13:40:46 roberto Exp roberto $ | 2 | ** $Id: lapi.c,v 1.1 1997/09/16 19:25:59 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 | */ |
@@ -13,7 +13,6 @@ | |||
13 | #include "ldo.h" | 13 | #include "ldo.h" |
14 | #include "lfunc.h" | 14 | #include "lfunc.h" |
15 | #include "lgc.h" | 15 | #include "lgc.h" |
16 | #include "lglobal.h" | ||
17 | #include "lmem.h" | 16 | #include "lmem.h" |
18 | #include "lobject.h" | 17 | #include "lobject.h" |
19 | #include "lstring.h" | 18 | #include "lstring.h" |
@@ -182,14 +181,15 @@ lua_Object lua_createtable (void) | |||
182 | lua_Object lua_getglobal (char *name) | 181 | lua_Object lua_getglobal (char *name) |
183 | { | 182 | { |
184 | luaD_checkstack(2); /* may need that to call T.M. */ | 183 | luaD_checkstack(2); /* may need that to call T.M. */ |
185 | luaV_getglobal(luaG_findsymbolbyname(name)); | 184 | luaV_getglobal(luaS_new(name)); |
186 | return put_luaObjectonTop(); | 185 | return put_luaObjectonTop(); |
187 | } | 186 | } |
188 | 187 | ||
189 | 188 | ||
190 | lua_Object lua_rawgetglobal (char *name) | 189 | lua_Object lua_rawgetglobal (char *name) |
191 | { | 190 | { |
192 | return put_luaObject(&luaG_global[luaG_findsymbolbyname(name)].object); | 191 | TaggedString *ts = luaS_new(name); |
192 | return put_luaObject(&ts->u.globalval); | ||
193 | } | 193 | } |
194 | 194 | ||
195 | 195 | ||
@@ -197,15 +197,15 @@ void lua_setglobal (char *name) | |||
197 | { | 197 | { |
198 | checkCparams(1); | 198 | checkCparams(1); |
199 | luaD_checkstack(2); /* may need that to call T.M. */ | 199 | luaD_checkstack(2); /* may need that to call T.M. */ |
200 | luaV_setglobal(luaG_findsymbolbyname(name)); | 200 | luaV_setglobal(luaS_new(name)); |
201 | } | 201 | } |
202 | 202 | ||
203 | 203 | ||
204 | void lua_rawsetglobal (char *name) | 204 | void lua_rawsetglobal (char *name) |
205 | { | 205 | { |
206 | Word n = luaG_findsymbolbyname(name); | 206 | TaggedString *ts = luaS_new(name); |
207 | checkCparams(1); | 207 | checkCparams(1); |
208 | s_object(n) = *(--luaD_stack.top); | 208 | luaS_rawsetglobal(ts, --luaD_stack.top); |
209 | } | 209 | } |
210 | 210 | ||
211 | 211 | ||
@@ -268,7 +268,7 @@ void *lua_getuserdata (lua_Object object) | |||
268 | { | 268 | { |
269 | if (object == LUA_NOOBJECT || ttype(Address(object)) != LUA_T_USERDATA) | 269 | if (object == LUA_NOOBJECT || ttype(Address(object)) != LUA_T_USERDATA) |
270 | return NULL; | 270 | return NULL; |
271 | else return tsvalue(Address(object))->u.v; | 271 | else return tsvalue(Address(object))->u.d.v; |
272 | } | 272 | } |
273 | 273 | ||
274 | lua_CFunction lua_getcfunction (lua_Object object) | 274 | lua_CFunction lua_getcfunction (lua_Object object) |
@@ -352,7 +352,7 @@ int lua_tag (lua_Object lo) | |||
352 | TObject *o = Address(lo); | 352 | TObject *o = Address(lo); |
353 | lua_Type t = ttype(o); | 353 | lua_Type t = ttype(o); |
354 | if (t == LUA_T_USERDATA) | 354 | if (t == LUA_T_USERDATA) |
355 | return o->value.ts->tag; | 355 | return o->value.ts->u.d.tag; |
356 | else if (t == LUA_T_ARRAY) | 356 | else if (t == LUA_T_ARRAY) |
357 | return o->value.a->htag; | 357 | return o->value.a->htag; |
358 | else return t; | 358 | else return t; |
@@ -369,7 +369,7 @@ void lua_settag (int tag) | |||
369 | (luaD_stack.top-1)->value.a->htag = tag; | 369 | (luaD_stack.top-1)->value.a->htag = tag; |
370 | break; | 370 | break; |
371 | case LUA_T_USERDATA: | 371 | case LUA_T_USERDATA: |
372 | (luaD_stack.top-1)->value.ts->tag = tag; | 372 | (luaD_stack.top-1)->value.ts->u.d.tag = tag; |
373 | break; | 373 | break; |
374 | default: | 374 | default: |
375 | luaL_verror("cannot change the tag of a %s", | 375 | luaL_verror("cannot change the tag of a %s", |
@@ -483,7 +483,7 @@ char *lua_getobjname (lua_Object o, char **name) | |||
483 | functofind = Address(o); | 483 | functofind = Address(o); |
484 | if ((*name = luaT_travtagmethods(checkfunc)) != NULL) | 484 | if ((*name = luaT_travtagmethods(checkfunc)) != NULL) |
485 | return "tag-method"; | 485 | return "tag-method"; |
486 | else if ((*name = luaG_travsymbol(checkfunc)) != NULL) | 486 | else if ((*name = luaS_travsymbol(checkfunc)) != NULL) |
487 | return "global"; | 487 | return "global"; |
488 | else return ""; | 488 | else return ""; |
489 | } | 489 | } |