lua_(set)getglobal are ok to use

This commit is contained in:
Roberto Ierusalimschy 2003-11-05 09:59:14 -02:00
parent 1e944de6cb
commit fa198197a0
6 changed files with 16 additions and 14 deletions

View File

@ -1,5 +1,5 @@
/* /*
** $Id: lauxlib.c,v 1.106 2003/10/10 12:57:55 roberto Exp roberto $ ** $Id: lauxlib.c,v 1.107 2003/10/20 18:32:55 roberto Exp roberto $
** Auxiliary functions for building Lua libraries ** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -238,13 +238,13 @@ LUALIB_API void luaL_openlib (lua_State *L, const char *libname,
const luaL_reg *l, int nup) { const luaL_reg *l, int nup) {
if (libname) { if (libname) {
/* check whether lib already exists */ /* check whether lib already exists */
lua_getfield(L, LUA_GLOBALSINDEX, libname); lua_getglobal(L, libname);
if (lua_isnil(L, -1)) { /* no? */ if (lua_isnil(L, -1)) { /* no? */
lua_pop(L, 1); lua_pop(L, 1);
lua_newtable(L); /* create it */ lua_newtable(L); /* create it */
lua_pushvalue(L, -1); lua_pushvalue(L, -1);
/* register it with given name */ /* register it with given name */
lua_setfield(L, LUA_GLOBALSINDEX, libname); lua_setglobal(L, libname);
} }
lua_insert(L, -(nup+1)); /* move library table to below upvalues */ lua_insert(L, -(nup+1)); /* move library table to below upvalues */
} }

View File

@ -1,5 +1,5 @@
/* /*
** $Id: lbaselib.c,v 1.135 2003/10/10 12:57:55 roberto Exp roberto $ ** $Id: lbaselib.c,v 1.136 2003/10/23 18:06:22 roberto Exp roberto $
** Basic library ** Basic library
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -218,7 +218,7 @@ static int luaB_next (lua_State *L) {
static int luaB_pairs (lua_State *L) { static int luaB_pairs (lua_State *L) {
luaL_checktype(L, 1, LUA_TTABLE); luaL_checktype(L, 1, LUA_TTABLE);
lua_getfield(L, LUA_GLOBALSINDEX, "next"); /* return generator, */ lua_getglobal(L, "next"); /* return generator, */
lua_pushvalue(L, 1); /* state, */ lua_pushvalue(L, 1); /* state, */
lua_pushnil(L); /* and initial value */ lua_pushnil(L); /* and initial value */
return 3; return 3;
@ -229,7 +229,7 @@ static int luaB_ipairs (lua_State *L) {
int i = (int)lua_tointeger(L, 2); int i = (int)lua_tointeger(L, 2);
luaL_checktype(L, 1, LUA_TTABLE); luaL_checktype(L, 1, LUA_TTABLE);
if (i == 0 && lua_isnone(L, 2)) { /* `for' start? */ if (i == 0 && lua_isnone(L, 2)) { /* `for' start? */
lua_getfield(L, LUA_GLOBALSINDEX, "ipairs"); /* return generator, */ lua_getglobal(L, "ipairs"); /* return generator, */
lua_pushvalue(L, 1); /* state, */ lua_pushvalue(L, 1); /* state, */
lua_pushinteger(L, 0); /* and initial value */ lua_pushinteger(L, 0); /* and initial value */
return 3; return 3;

View File

@ -1,5 +1,5 @@
/* /*
** $Id: ldblib.c,v 1.82 2003/10/07 20:13:41 roberto Exp roberto $ ** $Id: ldblib.c,v 1.83 2003/10/10 12:57:55 roberto Exp roberto $
** Interface from Lua to its debug API ** Interface from Lua to its debug API
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -339,7 +339,7 @@ static const luaL_reg dblib[] = {
LUALIB_API int luaopen_debug (lua_State *L) { LUALIB_API int luaopen_debug (lua_State *L) {
luaL_openlib(L, LUA_DBLIBNAME, dblib, 0); luaL_openlib(L, LUA_DBLIBNAME, dblib, 0);
lua_pushcfunction(L, errorfb); lua_pushcfunction(L, errorfb);
lua_setfield(L, LUA_GLOBALSINDEX, "_TRACEBACK"); lua_setglobal(L, "_TRACEBACK");
return 1; return 1;
} }

View File

@ -1,5 +1,5 @@
/* /*
** $Id: lmathlib.c,v 1.57 2003/10/07 20:13:41 roberto Exp roberto $ ** $Id: lmathlib.c,v 1.58 2003/10/10 12:57:55 roberto Exp roberto $
** Standard mathematical library ** Standard mathematical library
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -238,7 +238,7 @@ LUALIB_API int luaopen_math (lua_State *L) {
lua_pushnumber(L, PI); lua_pushnumber(L, PI);
lua_setfield(L, -2, "pi"); lua_setfield(L, -2, "pi");
lua_pushcfunction(L, math_pow); lua_pushcfunction(L, math_pow);
lua_setfield(L, LUA_GLOBALSINDEX, "__pow"); lua_setglobal(L, "__pow");
return 1; return 1;
} }

View File

@ -1,5 +1,5 @@
/* /*
** $Id: ltests.c,v 1.166 2003/10/10 13:29:08 roberto Exp roberto $ ** $Id: ltests.c,v 1.167 2003/10/20 12:25:23 roberto Exp roberto $
** Internal Module for Debugging of the Lua Implementation ** Internal Module for Debugging of the Lua Implementation
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -241,6 +241,7 @@ static int get_limits (lua_State *L) {
setnameval(L, "MAXVARS", MAXVARS); setnameval(L, "MAXVARS", MAXVARS);
setnameval(L, "MAXSTACK", MAXSTACK); setnameval(L, "MAXSTACK", MAXSTACK);
setnameval(L, "MAXUPVALUES", MAXUPVALUES); setnameval(L, "MAXUPVALUES", MAXUPVALUES);
setnameval(L, "NUM_OPCODES", NUM_OPCODES);
return 1; return 1;
} }

7
lua.h
View File

@ -1,5 +1,5 @@
/* /*
** $Id: lua.h,v 1.183 2003/10/20 12:25:23 roberto Exp roberto $ ** $Id: lua.h,v 1.184 2003/10/21 10:58:58 roberto Exp roberto $
** Lua - An Extensible Extension Language ** Lua - An Extensible Extension Language
** Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil ** Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil
** http://www.lua.org mailto:info@lua.org ** http://www.lua.org mailto:info@lua.org
@ -277,6 +277,9 @@ LUA_API lua_Alloc lua_getallocf (lua_State *L, void **ud);
#define lua_pushliteral(L, s) \ #define lua_pushliteral(L, s) \
lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1) lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1)
#define lua_setglobal(L,s) lua_setfield(L, LUA_GLOBALSINDEX, s)
#define lua_getglobal(L,s) lua_getfield(L, LUA_GLOBALSINDEX, s)
/* /*
@ -286,8 +289,6 @@ LUA_API lua_Alloc lua_getallocf (lua_State *L, void **ud);
#define lua_open() luaL_newstate() #define lua_open() luaL_newstate()
#define lua_getregistry(L) lua_pushvalue(L, LUA_REGISTRYINDEX) #define lua_getregistry(L) lua_pushvalue(L, LUA_REGISTRYINDEX)
#define lua_setglobal(L,s) lua_setfield(L, LUA_GLOBALSINDEX, s)
#define lua_getglobal(L,s) lua_getfield(L, LUA_GLOBALSINDEX, s)
/* compatibility with ref system */ /* compatibility with ref system */