** Find or create a module table with a given name. The function ** first looks at the _LOADED table and, if that fails, try a ** global variable with that name. In any case, leaves on the stack ** the module table. */
| 824 | ** the module table. |
| 825 | */ |
| 826 | LUALIB_API void luaL_pushmodule (lua_State *L, const char *modname, |
| 827 | int sizehint) { |
| 828 | luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 1); /* get _LOADED table */ |
| 829 | if (lua_getfield(L, -1, modname) != LUA_TTABLE) { /* no _LOADED[modname]? */ |
| 830 | lua_pop(L, 1); /* remove previous result */ |
| 831 | /* try global variable (and create one if it does not exist) */ |
| 832 | lua_pushglobaltable(L); |
| 833 | if (luaL_findtable(L, 0, modname, sizehint) != NULL) |
| 834 | luaL_error(L, "name conflict for module '%s'", modname); |
| 835 | lua_pushvalue(L, -1); |
| 836 | lua_setfield(L, -3, modname); /* _LOADED[modname] = new table */ |
| 837 | } |
| 838 | lua_remove(L, -2); /* remove _LOADED table */ |
| 839 | } |
| 840 | |
| 841 | |
| 842 | LUALIB_API void luaL_openlib (lua_State *L, const char *libname, |
no test coverage detected