luafilesystem has recently been updated, but here’s an attempt to create an alternative by going the cheap way: binding Boost Filesystem to Lua through LuaBind, testing using LuaState & Catch:
Category Archives: DLed
As it Is (2005)
A simple github + travis-ci project for quick c++ to lua binding tests
It’s sometimes necessary to create a simple example for C++ to Lua bindings on the run. Travis-CI might be of great help in that, while online C++ compilers will not suffice.
Here’s the project and a sample code:
https://github.com/d-led/lua_cpp_tryout
#include <lua.hpp> #include <LuaBridge.h> #include <RefCountedPtr.h> #include <LuaState.h> #include <iostream> void luabridge_bind(lua_State* L) { class Test { public: Test() { std::cout<<__FUNCTION__<<std::endl; } ~Test() { std::cout<<__FUNCTION__<<std::endl; } }; luabridge::getGlobalNamespace(L) .beginClass<Test>("Test") .addConstructor<void(*)(),RefCountedPtr<Test>>() .endClass() ; } int main() { lua::State state; luabridge_bind(state.getState()); try { state.doString("Test()"); state.doString("blabla()"); } catch (std::exception& e) { std::cerr<<e.what()<<std::endl; } }
↓
Test [string "blabla()"]:1: attempt to call global 'blabla' (a nil value) ~Test
note the automatic lifetime management
In the process of searching for a quick header-only wrapper for the Lua state I came across LuaState which was the first one that compiled out of the box. Its advantage over other wrappers for my needs was that it did reveal the actual Lua state, with the effect of other binding libraries being usable. It could itself provide an alternative to LuaBridge for writing bindings and could be investigated further.
It’s now easy to fork the project and try out bindings online.