RE: Callback Functions
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: RE: Callback Functions
- From: "Jerome Vuarand" <jerome.vuarand@...>
- Date: 2007年8月17日 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.