Share lua builtins open function across all lua-based languages.
This commit is contained in:
parent
7a88a1b3c3
commit
7a40c6ec64
77
src/luaapi.c
77
src/luaapi.c
|
@ -1131,6 +1131,27 @@ static s32 lua_loadfile(lua_State *lua)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void lua_open_builtins(lua_State *lua)
|
||||||
|
{
|
||||||
|
static const luaL_Reg loadedlibs[] =
|
||||||
|
{
|
||||||
|
{ "_G", luaopen_base },
|
||||||
|
{ LUA_LOADLIBNAME, luaopen_package },
|
||||||
|
{ LUA_COLIBNAME, luaopen_coroutine },
|
||||||
|
{ LUA_TABLIBNAME, luaopen_table },
|
||||||
|
{ LUA_STRLIBNAME, luaopen_string },
|
||||||
|
{ LUA_MATHLIBNAME, luaopen_math },
|
||||||
|
{ LUA_DBLIBNAME, luaopen_debug },
|
||||||
|
{ NULL, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const luaL_Reg *lib = loadedlibs; lib->func; lib++)
|
||||||
|
{
|
||||||
|
luaL_requiref(lua, lib->name, lib->func, 1);
|
||||||
|
lua_pop(lua, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const char* const ApiKeywords[] = API_KEYWORDS;
|
static const char* const ApiKeywords[] = API_KEYWORDS;
|
||||||
static const lua_CFunction ApiFunc[] =
|
static const lua_CFunction ApiFunc[] =
|
||||||
{
|
{
|
||||||
|
@ -1187,23 +1208,7 @@ static bool initLua(tic_mem* tic, const char* code)
|
||||||
closeLua(tic);
|
closeLua(tic);
|
||||||
|
|
||||||
lua_State* lua = machine->lua = luaL_newstate();
|
lua_State* lua = machine->lua = luaL_newstate();
|
||||||
|
lua_open_builtins(lua);
|
||||||
static const luaL_Reg loadedlibs[] =
|
|
||||||
{
|
|
||||||
{ "_G", luaopen_base },
|
|
||||||
{ LUA_COLIBNAME, luaopen_coroutine },
|
|
||||||
{ LUA_TABLIBNAME, luaopen_table },
|
|
||||||
{ LUA_STRLIBNAME, luaopen_string },
|
|
||||||
{ LUA_MATHLIBNAME, luaopen_math },
|
|
||||||
{ LUA_DBLIBNAME, luaopen_debug },
|
|
||||||
{ NULL, NULL }
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const luaL_Reg *lib = loadedlibs; lib->func; lib++)
|
|
||||||
{
|
|
||||||
luaL_requiref(lua, lib->name, lib->func, 1);
|
|
||||||
lua_pop(lua, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
initAPI(machine);
|
initAPI(machine);
|
||||||
|
|
||||||
|
@ -1462,24 +1467,7 @@ static bool initMoonscript(tic_mem* tic, const char* code)
|
||||||
closeLua(tic);
|
closeLua(tic);
|
||||||
|
|
||||||
lua_State* lua = machine->lua = luaL_newstate();
|
lua_State* lua = machine->lua = luaL_newstate();
|
||||||
|
lua_open_builtins(lua);
|
||||||
static const luaL_Reg loadedlibs[] =
|
|
||||||
{
|
|
||||||
{ "_G", luaopen_base },
|
|
||||||
{ LUA_LOADLIBNAME, luaopen_package },
|
|
||||||
{ LUA_COLIBNAME, luaopen_coroutine },
|
|
||||||
{ LUA_TABLIBNAME, luaopen_table },
|
|
||||||
{ LUA_STRLIBNAME, luaopen_string },
|
|
||||||
{ LUA_MATHLIBNAME, luaopen_math },
|
|
||||||
{ LUA_DBLIBNAME, luaopen_debug },
|
|
||||||
{ NULL, NULL }
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const luaL_Reg *lib = loadedlibs; lib->func; lib++)
|
|
||||||
{
|
|
||||||
luaL_requiref(lua, lib->name, lib->func, 1);
|
|
||||||
lua_pop(lua, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
luaopen_lpeg(lua);
|
luaopen_lpeg(lua);
|
||||||
setloaded(lua, "lpeg");
|
setloaded(lua, "lpeg");
|
||||||
|
@ -1630,24 +1618,7 @@ static bool initFennel(tic_mem* tic, const char* code)
|
||||||
closeLua(tic);
|
closeLua(tic);
|
||||||
|
|
||||||
lua_State* lua = machine->lua = luaL_newstate();
|
lua_State* lua = machine->lua = luaL_newstate();
|
||||||
|
lua_open_builtins(lua);
|
||||||
static const luaL_Reg loadedlibs[] =
|
|
||||||
{
|
|
||||||
{ "_G", luaopen_base },
|
|
||||||
{ LUA_LOADLIBNAME, luaopen_package },
|
|
||||||
{ LUA_COLIBNAME, luaopen_coroutine },
|
|
||||||
{ LUA_TABLIBNAME, luaopen_table },
|
|
||||||
{ LUA_STRLIBNAME, luaopen_string },
|
|
||||||
{ LUA_MATHLIBNAME, luaopen_math },
|
|
||||||
{ LUA_DBLIBNAME, luaopen_debug },
|
|
||||||
{ NULL, NULL }
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const luaL_Reg *lib = loadedlibs; lib->func; lib++)
|
|
||||||
{
|
|
||||||
luaL_requiref(lua, lib->name, lib->func, 1);
|
|
||||||
lua_pop(lua, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
initAPI(machine);
|
initAPI(machine);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue