EAPI Elua_State *elua_state_new(void);
EAPI void elua_state_free(Elua_State *state);
+EAPI Elua_State *elua_state_from_lua_get(lua_State *L);
+
EAPI int elua_report_error(lua_State *L, const char *pname, int status);
EAPI void elua_state_setup_i18n(lua_State *L);
ret = malloc(sizeof(Elua_State));
ret->luastate = L;
luaL_openlibs(L);
+ lua_pushlightuserdata(L, ret);
+ lua_setfield(L, LUA_REGISTRYINDEX, "elua_ptr");
return ret;
}
free(state);
}
+EAPI Elua_State *
+elua_state_from_lua_get(lua_State *L)
+{
+ lua_getfield(L, LUA_REGISTRYINDEX, "elua_ptr");
+ if (!lua_isnil(L, -1))
+ {
+ void *st = lua_touserdata(L, -1);
+ lua_pop(L, 1);
+ return (Elua_State *)st;
+ }
+ lua_pop(L, 1);
+ return NULL;
+}
+
static void
_elua_errmsg(const char *pname, const char *msg)
{