[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: lua function as argument
- From: Tom Wrensch <twrensch@...>
- Date: Tue, 6 Aug 2002 09:40:50 -0700 (PDT)
On Mon, 5 Aug 2002, Luiz Henrique de Figueiredo wrote:
> >How can I pass a lua callback function to a C function and later call this
> >function from C ?
>
> Sure. You can lua_call anything that's on the stack.
> --lhf
To expand on this answer a little bit, yes you can pass lua functions to
your C program, store them somewhere (global variables or a data
struture or whatever), then call them from your 'C' code using lua_call.
A few notes though (someone please correct me here if I'm wrong, I haven't
done this myself yet):
The variable type for a lua function is the generic Lua object type
TObject.
You'll want to tell the garbage collector that you're keeping a
reference to the function object, otherwise it might go away. You'll
have to check the API documentation on how to do this, but if I
remember correctly it's pretty easy.
Likewise, you'll have to tell the garbage collector when you stop
having a reference from 'C' to the function.
Finally, you'll have to push the function on the stack of a lua
state before calling it.
Anyone have a code example for this?
- Tom