convenient Lua bindings to use Ardour::DataType
authorRobin Gareus <robin@gareus.org>
Sat, 2 Apr 2016 21:41:33 +0000 (23:41 +0200)
committerRobin Gareus <robin@gareus.org>
Sat, 2 Apr 2016 21:41:33 +0000 (23:41 +0200)
libs/ardour/ardour/lua_api.h
libs/ardour/lua_api.cc
libs/ardour/luabindings.cc

index fd6bc364fdf7fb502a2f352a047a7753352fbfa8..7f0b54403bf185fd8bb56fd3bd08b559618b18ca 100644 (file)
 
 namespace ARDOUR { namespace LuaAPI {
 
+       int datatype_ctor_nil (lua_State *L);
+       int datatype_ctor_audio (lua_State *L);
+       int datatype_ctor_midi (lua_State *L);
+
        /** create a new Lua Processor (Plugin)
         *
         * @param s Session Handle
index a21dbfb3eaec7524fd340b5868b6e5d5aa4c9ba9..3bd4fc43f68578602755d27b4e04d26201ddc544 100644 (file)
@@ -36,6 +36,31 @@ using namespace ARDOUR;
 using namespace PBD;
 using namespace std;
 
+int
+ARDOUR::LuaAPI::datatype_ctor_nil (lua_State *L)
+{
+       DataType dt (DataType::NIL);
+       luabridge::Stack <DataType>::push (L, dt);
+       return 1;
+}
+
+int
+ARDOUR::LuaAPI::datatype_ctor_audio (lua_State *L)
+{
+       DataType dt (DataType::AUDIO);
+       // NB luabridge will copy construct the object and manage lifetime.
+       luabridge::Stack <DataType>::push (L, dt);
+       return 1;
+}
+
+int
+ARDOUR::LuaAPI::datatype_ctor_midi (lua_State *L)
+{
+       DataType dt (DataType::MIDI);
+       luabridge::Stack <DataType>::push (L, dt);
+       return 1;
+}
+
 boost::shared_ptr<Processor>
 ARDOUR::LuaAPI::new_luaproc (Session *s, const string& name)
 {
index 8c5023cfd7a4676cbb68c946e269e849c7fec211..41a29807eb046cc1d4fc2e6da0899adbcd22a5d7 100644 (file)
@@ -469,6 +469,9 @@ LuaBindings::common (lua_State* L)
 
                .beginClass <DataType> ("DataType")
                .addConstructor <void (*) (std::string)> ()
+               .addStaticCFunction ("null",  &LuaAPI::datatype_ctor_nil) // "nil" is a lua reseved word
+               .addStaticCFunction ("audio", &LuaAPI::datatype_ctor_audio)
+               .addStaticCFunction ("midi",  &LuaAPI::datatype_ctor_midi)
                .endClass()
 
                /* libardour enums */