Hi all,
I want to know whether the registry is suitable for what I am trying to do.
I have a C thread function which initializes the Lua state, opens the standard libraries and registers the C Lua functions to Lua using lua_register. I want to store an integer value when I spawn the script in this C thread function (lua_execute) and access the value in the C Lua API function.
Below is the code snippet of what I am trying to do.
For e.g. void *lua_execute (void *arg) {
/*lua_State *L;
/*opens standard libraries*/
L = lua_open();
luaopen_base(L);
/* and so on */
lua_register(L,"getval", lgetval);
/*do thread related work */
/*This is what I want to be able to do*/
/* In this C function push an integer mynumber and access it in lgetval */
static const char key = 'k';
mynumber = 5;
lua_pushlightuserdata(L,(void *)&key);
lua_pushnumber(L,mynumber);
lua_settable(L,LUA_REGISTRYINDEX);
/*load a lua script file execute it */
/*close thread and exit */
}
int lgetval(lua_State *L) {
/*In this function I want to access the value of mynumber can I access it? */
lua_pushlightuserdata (L, (void *)&key);
lua_gettable (L, LUA_REGISTRYINDEX);
mynumber = lua_tonumber (L,-1);
}
I look forward to your reply.
Thanks