Add Lua typecast from C++ vector to C-Array
This is useful for MIDI bytes amongst other things
This commit is contained in:
parent
5fb83da69c
commit
5e1a73a28c
|
@ -352,32 +352,27 @@ LuaBindings::stddef (lua_State* L)
|
|||
.beginStdList <std::string> ("StringList")
|
||||
.endClass ()
|
||||
|
||||
// std::vector<std::string>
|
||||
.beginStdVector <std::string> ("StringVector")
|
||||
.endClass ()
|
||||
|
||||
// std::vector<float>
|
||||
.beginStdVector <float> ("FloatVector")
|
||||
.endClass ()
|
||||
|
||||
// register float array (uint8_t*)
|
||||
.registerArray <uint8_t> ("ByteArray")
|
||||
.beginStdVector <uint8_t> ("ByteVector")
|
||||
.endClass ()
|
||||
|
||||
// register float array (float*)
|
||||
.registerArray <float> ("FloatArray")
|
||||
|
||||
// register float array (int32_t*)
|
||||
.registerArray <int32_t> ("IntArray")
|
||||
|
||||
// std::vector<float*>
|
||||
.beginStdVector <float*> ("FloatArrayVector")
|
||||
.endClass ()
|
||||
|
||||
.registerArray <uint8_t> ("ByteArray")
|
||||
.registerArray <float> ("FloatArray")
|
||||
.registerArray <int32_t> ("IntArray")
|
||||
|
||||
// samplepos_t, sampleoffset_t lists e.g. AnalysisFeatureList
|
||||
.beginStdList <int64_t> ("Int64List")
|
||||
.endClass ()
|
||||
|
||||
// TODO std::set
|
||||
// TODO std::set
|
||||
.endNamespace ();
|
||||
}
|
||||
|
||||
|
|
|
@ -1148,6 +1148,17 @@ struct CFunc
|
|||
if (!t) { return luaL_error (L, "cannot derefencee shared_ptr"); }
|
||||
return tableToListHelper<T, C> (L, t->get());
|
||||
}
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
|
||||
template <class T, class C>
|
||||
static int vectorToArray (lua_State *L)
|
||||
{
|
||||
C * const t = Userdata::get<C> (L, 1, false);
|
||||
T * a = &((*t)[0]);
|
||||
Stack <T*>::push (L, a);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
template <class T, class C>
|
||||
|
|
|
@ -1938,11 +1938,11 @@ public:
|
|||
return beginConstStdVector<T> (name)
|
||||
.addVoidConstructor ()
|
||||
.addFunction ("push_back", (void (LT::*)(const T&))<::push_back)
|
||||
.addFunction ("clear", (void (LT::*)())<::clear)
|
||||
.addExtCFunction ("to_array", &CFunc::vectorToArray<T, LT>)
|
||||
.addExtCFunction ("add", &CFunc::tableToList<T, LT>);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
template <class T>
|
||||
|
|
Loading…
Reference in New Issue
Block a user