【分享】Lua Lambda自动绑定

修改bindings-generator(参考这个commit)
https://github.com/WuJiayiSH/bindings-generator/commit/06359705692de53ff00f14ef7b4d97d9e2ecf7e5

为了释放lua回调,用了一个智能指针来包装lua函数并传到lambda里(参考了js的lambda实现),这样lua回调会跟着lambda销毁。所以要加一个包装类到LuaBasicConversions.h

class LuaFunctionWrapper
{
public:
LuaFunctionWrapper(lua_State* L, LUA_FUNCTION handler);
~LuaFunctionWrapper();
lua_State* getLuaState() {return _state;};
LUA_FUNCTION getLuaFunction() {return _handler;};
private:
lua_State* _state;
LUA_FUNCTION _handler;
};

实现加到LuaBasicConversions.cpp

LuaFunctionWrapper::LuaFunctionWrapper(lua_State* L, LUA_FUNCTION handler):
_state(L),
_handler(handler)
{
}

LuaFunctionWrapper::~LuaFunctionWrapper()
{
toluafix_remove_function_by_refid(_state, _handler);
}

最后重新绑定一下