[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Is it possible to store lua function in a C struct?
- From: Rob Hoelz <rob@...>
- Date: Tue, 8 May 2012 04:09:44 -0400
luaL_ref should handle your needs quite nicely:
/* with your function on the top of the stack */
int ref = luaL_ref(L, LUA_REGISTRYINDEX);
/* squirrel away ref in your struct */
/* later on... */
lua_rawgeti(L, LUA_REGISTRYINDEX, ref);
/* your function is once again on the top of the stack! */
-Rob
On Tue, May 08, 2012 at 10:02:28AM +0200, Tezduyar Lindskog, Umut wrote:
> Hi all,
>
> Is it possible to store lua function in a C struct and later call lua function from C using the stored information?
>
> I am looking for an implementation as following:
>
> void* myluafunc = luaL_checkluafunction (L, 1);
> lua_pushfunctionptr (L, myluafunc);
> lua_call (L,0,0);
>
> I have implemented a workaround where lua function's name is stored in a char array in C and then later on lua function is called using following APIs. This way is working fine but using function name as the identifier is using extra memory.
>
> char name[128];
> int button_lua_new (lua_State *L)
> {
> const char* myluafuncname = luaL_checkstring (L,1);
> strcpy (name, myluafuncname);
> }
> void call_button_event_handler ()
> {
> lua_getglobal(L, name);
> lua_call (L,0,0);
> }
>
> Thanks