| 1 | /* |
| 2 | ** Library initialization. |
| 3 | ** Copyright (C) 2005-2021 Mike Pall. See Copyright Notice in luajit.h |
| 4 | ** |
| 5 | ** Major parts taken verbatim from the Lua interpreter. |
| 6 | ** Copyright (C) 1994-2008 Lua.org, PUC-Rio. See Copyright Notice in lua.h |
| 7 | */ |
| 8 | |
| 9 | #define lib_init_c |
| 10 | #define LUA_LIB |
| 11 | |
| 12 | #include "lua.h" |
| 13 | #include "lauxlib.h" |
| 14 | #include "lualib.h" |
| 15 | |
| 16 | #include "lj_arch.h" |
| 17 | |
| 18 | static const luaL_Reg lj_lib_load[] = { |
| 19 | { "" , luaopen_base }, |
| 20 | { LUA_LOADLIBNAME, luaopen_package }, |
| 21 | { LUA_TABLIBNAME, luaopen_table }, |
| 22 | { LUA_IOLIBNAME, luaopen_io }, |
| 23 | { LUA_OSLIBNAME, luaopen_os }, |
| 24 | { LUA_STRLIBNAME, luaopen_string }, |
| 25 | { LUA_MATHLIBNAME, luaopen_math }, |
| 26 | { LUA_DBLIBNAME, luaopen_debug }, |
| 27 | { LUA_BITLIBNAME, luaopen_bit }, |
| 28 | { LUA_JITLIBNAME, luaopen_jit }, |
| 29 | { NULL, NULL } |
| 30 | }; |
| 31 | |
| 32 | static const luaL_Reg lj_lib_preload[] = { |
| 33 | #if LJ_HASFFI |
| 34 | { LUA_FFILIBNAME, luaopen_ffi }, |
| 35 | #endif |
| 36 | { NULL, NULL } |
| 37 | }; |
| 38 | |
| 39 | LUALIB_API void luaL_openlibs(lua_State *L) |
| 40 | { |
| 41 | const luaL_Reg *lib; |
| 42 | for (lib = lj_lib_load; lib->func; lib++) { |
| 43 | lua_pushcfunction(L, lib->func); |
| 44 | lua_pushstring(L, lib->name); |
| 45 | lua_call(L, 1, 0); |
| 46 | } |
| 47 | luaL_findtable(L, LUA_REGISTRYINDEX, "_PRELOAD" , |
| 48 | sizeof(lj_lib_preload)/sizeof(lj_lib_preload[0])-1); |
| 49 | for (lib = lj_lib_preload; lib->func; lib++) { |
| 50 | lua_pushcfunction(L, lib->func); |
| 51 | lua_setfield(L, -2, lib->name); |
| 52 | } |
| 53 | lua_pop(L, 1); |
| 54 | } |
| 55 | |
| 56 | |