From 51acce51a60d9e32dee4b27ecddc907ab4d2d8c4 Mon Sep 17 00:00:00 2001 From: ame Date: Wed, 31 Jan 2024 11:55:58 -0600 Subject: docs stuff --- src/lua.h | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) (limited to 'src/lua.h') diff --git a/src/lua.h b/src/lua.h index f853408..c31e31f 100644 --- a/src/lua.h +++ b/src/lua.h @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include #if LUA_VERSION_NUM == 504 @@ -9,6 +9,10 @@ luaL_register(L, NULL, FN);\ lua_settable(L, -3); + + #define requiref( L, modname, f, glob ) \ + { luaL_requiref( L, modname, f, glob ); lua_pop( L, 1 ); } + #define lua_objlen(L,i) lua_rawlen(L,(i)) #define luaL_register(L, M, F) luaL_newlib(L, F); #else @@ -16,6 +20,32 @@ lua_newtable(L);\ luaL_register(L, NULL, FN);\ lua_setfield(L, 2, N); + + //taken straight from luaproc + #define requiref(L, modname, f, glob){\ + lua_pushcfunction(L, f);\ + lua_pushstring(L, modname); \ + lua_call(L, 1, 1);\ + lua_getfield(L, LUA_GLOBALSINDEX, LUA_LOADLIBNAME);\ + if(lua_type(L, -1) == LUA_TTABLE){\ + lua_getfield(L, -1, "loaded");\ + if(lua_type(L, -1) == LUA_TTABLE){\ + lua_getfield(L, -1, modname);\ + if(lua_type(L, -1) == LUA_TNIL) {\ + lua_pushvalue(L, 1);\ + lua_setfield(L, -3, modname);\ + }\ + lua_pop(L, 1);\ + }\ + lua_pop(L, 1);\ + }\ + lua_pop(L, 1);\ + if(glob){\ + lua_setglobal(L, modname);\ + }else{\ + lua_pop(L, 1);\ + }\ + } #endif -- cgit v1.2.3