summaryrefslogtreecommitdiff
path: root/libs/lua/LuaBridge/detail
diff options
context:
space:
mode:
Diffstat (limited to 'libs/lua/LuaBridge/detail')
-rw-r--r--libs/lua/LuaBridge/detail/CFunctions.h14
-rw-r--r--libs/lua/LuaBridge/detail/Namespace.h2
2 files changed, 15 insertions, 1 deletions
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
@@ -1234,6 +1234,20 @@ struct CFunc
}
//--------------------------------------------------------------------------
+ // push back a C-pointer to a std::list<T*>
+
+ template <class T, class C>
+ static int pushbackptr (lua_State *L)
+ {
+ C * const c = Userdata::get <C> (L, 1, false);
+ if (!c) { return luaL_error (L, "invalid pointer to std::list<>"); }
+ T * const v = Userdata::get <T> (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
template <class K, class V>
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<TP> LT;
return beginConstStdCPtrList<T> (name)
.addFunction ("unique", (void (LT::*)())&LT::unique)
- .addFunction ("push_back", (void (LT::*)(const TP&))&LT::push_back);
+ .addExtCFunction ("push_back", &CFunc::pushbackptr<T, LT>);
}