From dbc30081635098c90eeeda16ed2273f166684d83 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 12 Apr 2023 20:47:02 +0200 Subject: [PATCH] Add Lua Bindings for const shared_ptr lists (295dbd8e1e8) --- libs/ardour/luabindings.cc | 10 ++++++++++ libs/lua/LuaBridge/detail/Namespace.h | 28 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc index 73a840cf7b..8d2ae5f7db 100644 --- a/libs/ardour/luabindings.cc +++ b/libs/ardour/luabindings.cc @@ -2123,11 +2123,21 @@ LuaBindings::common (lua_State* L) .beginConstStdVector > ("VCAVector") .endClass () + // std::shared_ptr + .beginPtrConstStdList > ("ConstRouteListPtr") + .addVoidPtrConstructor > const > () + .endClass () + // std::shared_ptr .beginPtrStdList > ("RouteListPtr") .addVoidPtrConstructor > > () .endClass () + // std::shared_ptr + .beginPtrConstStdVector > ("ConstBundleListPtr") + .addVoidPtrConstructor > const > () + .endClass () + // std::shared_ptr .beginPtrStdVector > ("BundleListPtr") .addVoidPtrConstructor > > () diff --git a/libs/lua/LuaBridge/detail/Namespace.h b/libs/lua/LuaBridge/detail/Namespace.h index 39a66e1ab4..a9092cde1e 100644 --- a/libs/lua/LuaBridge/detail/Namespace.h +++ b/libs/lua/LuaBridge/detail/Namespace.h @@ -2029,6 +2029,19 @@ public: //---------------------------------------------------------------------------- + template + Class > > beginPtrConstStdList (char const* name) + { + typedef std::list const LT; + typedef typename LT::size_type T_SIZE; + return beginClass > (name) + .addPtrFunction ("empty", (bool (LT::*)()const)<::empty) + .addPtrFunction ("size", (T_SIZE (LT::*)()const)<::size) + .addPtrFunction ("reverse", (void (LT::*)())<::reverse) + .addExtCFunction ("iter", &CFunc::ptrListIter) + .addExtCFunction ("table", &CFunc::ptrListToTable); + } + template Class > > beginPtrStdList (char const* name) { @@ -2053,6 +2066,21 @@ public: .addExtCFunction ("table", &CFunc::ptrListToTable); } + template + Class > > beginPtrConstStdVector (char const* name) + { + typedef std::vector const LT; + typedef typename std::vector::reference T_REF; + typedef typename std::vector::size_type T_SIZE; + + return beginClass > (name) + .addPtrFunction ("empty", (bool (LT::*)()const)<::empty) + .addPtrFunction ("size", (T_SIZE (LT::*)()const)<::size) + .addPtrFunction ("at", (T_REF (LT::*)(T_SIZE))<::at) + .addExtCFunction ("iter", &CFunc::ptrListIter) + .addExtCFunction ("table", &CFunc::ptrListToTable); + } + template Class > > beginPtrStdVector (char const* name) {