Pass a Lua function to a std::function with Swig
Lets assume for sake of simplicity, a :c++:std::function<void()> written in Lua has to be passed down from your script back into your C++ engine.
First be sure to place the lua_fnptr
module of Swig in your .i
file
Next provide a wrapper class
class LuaFnPtr { public: LuaFnPtr(SWIGLUA_REF fn) : fn(fn) {}; void operator()() { swiglua_ref_get(&fn); lua_call(this->fn.L, 0, 0); }; private: SWIGLUA_REF fn; };
Now you can wrap some callback function right away, e.g.: