[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: RE: Callback Functions
- From: "Jerome Vuarand" <jerome.vuarand@...>
- Date: Fri, 17 Aug 2007 14:28:02 -0400
W. C. Bubel wrote:
> I have a question about making calls from C into Lua functions. The
> manual is quite clear on what to do when you know the identifier of
> the function, however I'm wondering if the function itself (a
> pointer) can be sent to the C side and somehow stored to be called at
> a later time.
> Specifically, I'm wondering if this syntax is possible, assuming
> setcallback is a C Function:
> setcallback( function() ... end )
> Is there a specific provision for this, that I overlooked, or would
> trick need to be involved?
You cannot store a pointer to a Lua closure (an anonymous function).
However you can store a reference to it in a table, such as the globals,
the registry, or the environment/metatable of one of your userdata.
There are functions in Lua aux library to easily create such references:
luaL_ref, luaL_unref. These functions return an integer. You can then
store the integer along with the lua_State pointer in a small structure
to find and call the callback.