diff options
Diffstat (limited to 'lapi.c')
| -rw-r--r-- | lapi.c | 30 |
1 files changed, 28 insertions, 2 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lapi.c,v 1.35 1999/02/08 17:07:59 roberto Exp roberto $ | 2 | ** $Id: lapi.c,v 1.36 1999/02/12 19:23:02 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 | */ |
| @@ -426,10 +426,36 @@ void lua_settag (int tag) | |||
| 426 | } | 426 | } |
| 427 | 427 | ||
| 428 | 428 | ||
| 429 | TaggedString *luaA_nextvar (TaggedString *g) { | ||
| 430 | if (g == NULL) | ||
| 431 | g = (TaggedString *)L->rootglobal.next; /* first variable */ | ||
| 432 | else { | ||
| 433 | /* check whether name is in global var list */ | ||
| 434 | luaL_arg_check((GCnode *)g != g->head.next, 1, "variable name expected"); | ||
| 435 | g = (TaggedString *)g->head.next; /* get next */ | ||
| 436 | } | ||
| 437 | while (g && g->u.s.globalval.ttype == LUA_T_NIL) /* skip globals with nil */ | ||
| 438 | g = (TaggedString *)g->head.next; | ||
| 439 | return g; | ||
| 440 | } | ||
| 441 | |||
| 442 | |||
| 443 | char *lua_nextvar (char *varname) { | ||
| 444 | TaggedString *g = (varname == NULL) ? NULL : luaS_new(varname); | ||
| 445 | g = luaA_nextvar(g); | ||
| 446 | if (g) { | ||
| 447 | luaA_pushobject(&g->u.s.globalval); | ||
| 448 | return g->str; | ||
| 449 | } | ||
| 450 | else | ||
| 451 | return NULL; | ||
| 452 | } | ||
| 453 | |||
| 454 | |||
| 429 | 455 | ||
| 430 | /* | 456 | /* |
| 431 | ** {====================================================== | 457 | ** {====================================================== |
| 432 | ** To manipulate the implementation global variables | 458 | ** To manipulate some state information |
| 433 | ** ======================================================= | 459 | ** ======================================================= |
| 434 | */ | 460 | */ |
| 435 | 461 | ||
