Less weak plugin preset system (maybe AU preset stuff can use the 'normal' thing...
[ardour.git] / libs / ardour / ardour / jack_port.h
index c8add2c27083cc60725ec5d4f149836e1eacdbfb..e19af25fd105d648ff36adeb0f762487c7b23346 100644 (file)
@@ -32,45 +32,54 @@ 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);
-
-       bool is_mine () const;
-
-       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);
        }
 
        void ensure_monitor_input (bool yn) {
-
-#ifdef HAVE_JACK_PORT_ENSURE_MONITOR
                jack_port_ensure_monitor (_port, yn);
-#else
-               jack_port_request_monitor(_port, yn);
-#endif
-
        }
 
        /*XXX completely bloody useless imho*/
@@ -98,8 +107,7 @@ class JackPort : public virtual Port {
        int disconnect ();
        void recompute_total_latency() const;
 
-       static void set_engine (AudioEngine*);
-       static AudioEngine* engine;
+       std::set<std::string> _named_connections;
 };
  
 } // namespace ARDOUR