Make port inserts work.
[ardour.git] / libs / ardour / ardour / jack_port.h
index d973ed2cab76c0ff3cdfc2a1bd8c17bc4f7606a3..3101ce95230e201c72bd4b7394503e023ac97fbb 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2002 Paul Davis 
+    Copyright (C) 2002 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -21,8 +21,8 @@
 #define __ardour_jack_port_h__
 
 #include <sigc++/signal.h>
-#include <pbd/failed_constructor.h>
-#include <ardour/port.h>
+#include "pbd/failed_constructor.h"
+#include "ardour/port.h"
 #include <jack/jack.h>
 
 namespace ARDOUR {
@@ -32,31 +32,48 @@ class Buffer;
 
 /** Abstract class representing JACK ports
  */
-class JackPort : public virtual Port {
+class JackPort : public virtual Port, public PortConnectableByName {
    public:
 
        ~JackPort();
 
-       std::string short_name() 
+       std::string short_name() const {
                return jack_port_short_name (_port);
        }
-       
-       int set_name (std::string str);
-       
-       int connected () const {
+
+       int set_name (const std::string& str);
+
+       bool connected () const {
                return jack_port_connected (_port);
        }
-       
+
        int reestablish ();
-       
+       int reconnect ();
+
+       int connect (Port& other) {
+               if (_flags & IsOutput) {
+                       return 0;
+               }
+               return connect (other.name());
+       }
+
+       int disconnect (Port& other) {
+               return disconnect (other.name());
+       }
+
+       int disconnect_all ();
+
+       // connect-by-name API
+
+       int connect (const std::string& other_name);
+       int disconnect (const std::string& other_name);
+
        bool connected_to (const std::string& portname) const {
                return jack_port_connected_to (_port, portname.c_str());
        }
 
-       const char ** get_connections () const {
-               return jack_port_get_connections (_port);
-       }
-       
+       int get_connections (std::vector<std::string>& names) const;
+
        bool monitoring_input () const {
                return jack_port_monitoring_input (_port);
        }
@@ -87,13 +104,12 @@ class JackPort : public virtual Port {
        JackPort (const std::string&, DataType type, Flags flags);
        jack_port_t*  _port;
 
-       int disconnect ();
+       int disconnect ();
        void recompute_total_latency() const;
 
-       static void set_engine (AudioEngine*);
-       static AudioEngine* engine;
+       std::set<std::string> _named_connections;
 };
+
 } // namespace ARDOUR
 
 #endif /* __ardour_jack_port_h__ */