new lua implementation.
[apps/madmutt.git] / lib-lua / runtime.c
index 0fb777c..e4482f2 100644 (file)
 #include "lib-lua_priv.h"
 
 static lua_State *L;
-static reg_entry registry[LTK_count];
 
-static const luaL_Reg lualibs[] = {
-    {"",              luaopen_base},
-    {LUA_OSLIBNAME,   luaopen_os},
-    {LUA_LOADLIBNAME, luaopen_package},
-    {LUA_TABLIBNAME,  luaopen_table},
-    {LUA_IOLIBNAME,   luaopen_io},
-    {LUA_STRLIBNAME,  luaopen_string},
-    {LUA_MATHLIBNAME, luaopen_math},
-    {LUA_DBLIBNAME,   luaopen_debug},
-    {LUA_MADMUTT,     luaopen_madmutt},
-};
 
-void mlua_initialize(void)
+void luaM_initialize(void)
 {
+    static const luaL_Reg lualibs[] = {
+        {"",              luaopen_base},
+        {LUA_OSLIBNAME,   luaopen_os},
+        {LUA_LOADLIBNAME, luaopen_package},
+        {LUA_TABLIBNAME,  luaopen_table},
+        {LUA_IOLIBNAME,   luaopen_io},
+        {LUA_STRLIBNAME,  luaopen_string},
+        {LUA_MATHLIBNAME, luaopen_math},
+        {LUA_DBLIBNAME,   luaopen_debug},
+        {"madmutt",       luaopen_madmutt},
+    };
+
     int i;
 
     L = lua_open();
@@ -47,18 +47,18 @@ void mlua_initialize(void)
     }
 }
 
-void mlua_shutdown(void)
+void luaM_shutdown(void)
 {
     lua_close(L);
 }
 
 
-int mlua_dofile(const char *filename)
+int luaM_dofile(const char *filename)
 {
     return luaL_dofile(L, filename);
 }
 
-int mlua_wrap(void (*errfun)(const char *fmt, ...), int status)
+int luaM_wrap(void (*errfun)(const char *fmt, ...), int status)
 {
     if (status) {
         (*errfun)("-[lua]-: %s\n", lua_tostring(L, -1));
@@ -67,30 +67,16 @@ int mlua_wrap(void (*errfun)(const char *fmt, ...), int status)
     return status;
 }
 
-const char *mlua_reggets(int tk)
-{
-    if (registry[tk].type != REG_STR)
-        return NULL;
-    return registry[tk].s;
-}
 
-int mlua_reggeti(int tk)
+quadopt_t luaM_checkquadopt(lua_State *Ls, int narg)
 {
-    if (registry[tk].type != REG_INT)
-        return -1;
-    return registry[tk].i;
-}
+    const char *s;
+    int i = luaL_checkinteger(Ls, narg);
 
-void mlua_regsets(int tk, const char *s)
-{
-    reg_entry_wipe(registry + tk);
-    registry[tk].type = REG_STR;
-    registry[tk].s    = m_strdup(s);
+    if (i & ~3) {
+        s = lua_pushfstring(Ls, "int in [0-3] expected, got %d", i);
+        return luaL_argerror(Ls, narg, s);
+    }
+    return i;
 }
 
-void mlua_regseti(int tk, int i)
-{
-    reg_entry_wipe(registry + tk);
-    registry[tk].type = REG_INT;
-    registry[tk].i    = i;
-}