[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Can I bind a function with callback to lua?
- From: "Ashwin Hirschi" <deery@...>
- Date: Sat, 26 Feb 2005 02:50:31 +0100
I'm a novice here. I got a problem that I want to binding a c function with callback (function pointer) to lua.The function is first-class type in lua but it does not the same in c. Have a look of the source:
// code in c
void repeat(int time,int (*call)())
{
int i;
for (i=0;i<time;i++) call();
}
-- code in lua
function sayhello() print("Hello!\n") end
repeat(10,sayhello) -- print "Hello!" 10 times
You could try something like this [untested!] fragment:
int my_silly_repeat(lua_State *L)
{
int repeat = lua_tonumber(L, 1);
int i;
for (i = 0; i < repeat; ++i)
{
lua_pushvalue(L, 2);
lua_call(L, 0, 0);
}
return 0;
}
lua_register(L, "repeat", my_silly_repeat);
Note that I changed the signature of the repeat function to allow it to be called directly from Lua.
Ashwin.
--
no signature is a signature.