lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]



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.