[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: RE: Registering function
- From: "Josh Jensen" <joshj@...>
- Date: Tue, 9 Oct 2001 16:59:41 -0700
> 1. I'd like to avoid passing a lua_state
>
> Granted, this isn't going to be directly possible, but
> basically I'd like to hide Lua from the rest of my
> application and instead have it go through a proxy. So instead of:
>
> int callback( struct lua_State *pLua );
>
> I'd like to be able have something more like:
>
> int callback( MyProxy *pProxy )
> {
> }
>
> Where "callback" would query pProxy for the arguments
> supplied. This way I don't have external code dependent on
> Lua directly.
>From my C++ wrapper, LuaState, whose link is currently broken right now
or you could download it. :) Note that your class can NOT have virtual
functions and the lua_State* member variable must be first.
typedef int (*LuaStateCFunction)(LuaState state);
class LuaState
{
public:
// Functions...
void Register(const char* funcName, LuaStateCFunction function)
{
lua_pushstring(m_state, funcName);
lua_pushcclosure(m_state, (lua_CFunction)function, 0);
lua_settable(m_state, m_stackIndex);
}
protected:
lua_State* m_state;
};
static int Callback(LuaState state)
{
printf("Hi\n");
return 0;
}
LuaState state;
state.Register("Callback", Callback);
-Josh