diff --git a/libs/lua/LuaBridge/detail/CFunctions.h b/libs/lua/LuaBridge/detail/CFunctions.h index 7300e9cb70..22dc115a6a 100644 --- a/libs/lua/LuaBridge/detail/CFunctions.h +++ b/libs/lua/LuaBridge/detail/CFunctions.h @@ -1233,6 +1233,20 @@ struct CFunc return listToTableHelper (L, t->get()); } + //-------------------------------------------------------------------------- + // push back a C-pointer to a std::list + + template + static int pushbackptr (lua_State *L) + { + C * const c = Userdata::get (L, 1, false); + if (!c) { return luaL_error (L, "invalid pointer to std::list<>"); } + T * const v = Userdata::get (L, 2, true); + if (!v) { return luaL_error (L, "invalid pointer to std::list<>::value_type"); } + c->push_back (v); + return 0; + } + //-------------------------------------------------------------------------- // generate std::map from table diff --git a/libs/lua/LuaBridge/detail/Namespace.h b/libs/lua/LuaBridge/detail/Namespace.h index 5ea139ee22..76474aa703 100644 --- a/libs/lua/LuaBridge/detail/Namespace.h +++ b/libs/lua/LuaBridge/detail/Namespace.h @@ -1911,7 +1911,7 @@ public: typedef std::list LT; return beginConstStdCPtrList (name) .addFunction ("unique", (void (LT::*)())<::unique) - .addFunction ("push_back", (void (LT::*)(const TP&))<::push_back); + .addExtCFunction ("push_back", &CFunc::pushbackptr); }