elua lib: add elua_state_from_lua_get

This commit is contained in:
Daniel Kolesa 2015-04-08 14:29:58 +01:00 committed by Daniel Kolesa
parent e0066ca9e7
commit 357d902b87
2 changed files with 18 additions and 0 deletions

View File

@ -69,6 +69,8 @@ EAPI int elua_shutdown(void);
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);

View File

@ -72,6 +72,8 @@ elua_state_new(void)
ret = malloc(sizeof(Elua_State));
ret->luastate = L;
luaL_openlibs(L);
lua_pushlightuserdata(L, ret);
lua_setfield(L, LUA_REGISTRYINDEX, "elua_ptr");
return ret;
}
@ -83,6 +85,20 @@ elua_state_free(Elua_State *state)
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)
{