From 5e1a73a28c07ba8c9c80b27abdacdc6da5f080bd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 1 Dec 2019 21:32:10 +0100 Subject: Add Lua typecast from C++ vector to C-Array This is useful for MIDI bytes amongst other things --- libs/lua/LuaBridge/detail/CFunctions.h | 11 +++++++++++ libs/lua/LuaBridge/detail/Namespace.h | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'libs/lua') diff --git a/libs/lua/LuaBridge/detail/CFunctions.h b/libs/lua/LuaBridge/detail/CFunctions.h index 22dc115a6a..88c30fc4ad 100644 --- a/libs/lua/LuaBridge/detail/CFunctions.h +++ b/libs/lua/LuaBridge/detail/CFunctions.h @@ -1148,6 +1148,17 @@ struct CFunc if (!t) { return luaL_error (L, "cannot derefencee shared_ptr"); } return tableToListHelper (L, t->get()); } + //-------------------------------------------------------------------------- + + + template + static int vectorToArray (lua_State *L) + { + C * const t = Userdata::get (L, 1, false); + T * a = &((*t)[0]); + Stack ::push (L, a); + return 1; + } //-------------------------------------------------------------------------- template diff --git a/libs/lua/LuaBridge/detail/Namespace.h b/libs/lua/LuaBridge/detail/Namespace.h index 0ea453e932..46fdaa5252 100644 --- a/libs/lua/LuaBridge/detail/Namespace.h +++ b/libs/lua/LuaBridge/detail/Namespace.h @@ -1938,11 +1938,11 @@ public: return beginConstStdVector (name) .addVoidConstructor () .addFunction ("push_back", (void (LT::*)(const T&))<::push_back) + .addFunction ("clear", (void (LT::*)())<::clear) + .addExtCFunction ("to_array", &CFunc::vectorToArray) .addExtCFunction ("add", &CFunc::tableToList); } - - //---------------------------------------------------------------------------- template -- cgit v1.2.3