summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-02-23 22:19:19 +0100
committerRobin Gareus <robin@gareus.org>2017-02-23 22:32:32 +0100
commit37dc93b40aba3ab73dc303ccbab5f2b020e64ba0 (patch)
tree415a73032f9c2ab87f5be508d7cb5e2ea3d12269 /libs
parente8cebac6a36a45a59cd70f3a0c68a2311366f784 (diff)
luaBridge support const references to class-instance pointers
Support passing "T*" as as "const T* &" argument e.g. std::list<T*>::push_back ( const T* & )
Diffstat (limited to 'libs')
-rw-r--r--libs/lua/LuaBridge/detail/Userdata.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/libs/lua/LuaBridge/detail/Userdata.h b/libs/lua/LuaBridge/detail/Userdata.h
index feab28f132..eaa669811e 100644
--- a/libs/lua/LuaBridge/detail/Userdata.h
+++ b/libs/lua/LuaBridge/detail/Userdata.h
@@ -783,6 +783,22 @@ struct Stack <T const* const>
}
};
+// const references to class-instance pointers
+// e.g. std::list<T*>::push_back ( const T* & )
+template <class T>
+struct Stack <T* const&>
+{
+ static inline void push (lua_State* L, T* const& p)
+ {
+ UserdataPtr::push (L, p);
+ }
+
+ static inline T* get (lua_State* L, int index)
+ {
+ return Userdata::get <T> (L, index, true);
+ }
+};
+
// reference
template <class T>
struct Stack <T&>