#pragma once #include #include #include namespace Balau { class LuaIO { public: LuaIO(IO h) : m_h(h) { } LuaIO(const LuaIO & lio) : m_h(lio.m_h) { } IO getIO() { return m_h; } void cleanup() { m_h->close(); } private: IO m_h; }; class LuaHandleFactory : public LuaObjectFactory { public: LuaHandleFactory(IO h) : m_obj(new LuaIO(h)) { } static void pushStatics(Lua & L); protected: LuaHandleFactory(LuaIO * h) : m_obj(h) { } virtual void pushObjectAndMembers(Lua & L) override; private: LuaIO * m_obj; }; class LuaInputFactory : public LuaHandleFactory { public: LuaInputFactory(IO h) : LuaHandleFactory(h) { } static void pushStatics(Lua & L); private: virtual void pushObjectAndMembers(Lua & L) override; }; void registerLuaHandle(Lua &); };