Socket/Protocols/Raw: EUI64 documentation
[senf.git] / PPI / Setup.hh
index c113e91..7ca5068 100644 (file)
@@ -23,8 +23,8 @@
 /** \file
     \brief Setup public header */
 
-#ifndef HH_Setup_
-#define HH_Setup_ 1
+#ifndef HH_SENF_PPI_Setup_
+#define HH_SENF_PPI_Setup_ 1
 
 // Custom includes
 #include <boost/type_traits.hpp>
@@ -37,6 +37,8 @@
 namespace senf {
 namespace ppi {
 
+#ifdef DOXYGEN
+
     /** \brief Connect modules
 
         senf::ppi::connect() establishes a connection between two modules or, to be more precise,
@@ -52,32 +54,43 @@ namespace ppi {
         \li Either or both of the connectors are untyped (they accept/send arbitrary senf::Packet's)
         \li Both connectors send/accept the exactly same packet type.
 
-        \throws IncompatibleConnectorsException if the two connectors are not type compatible.
+        Depending on the type of input or output, the connect call may require additional
+        arguments. See the respective module documentation for more information
+
+        \throws connector::IncompatibleConnectorsException if the two connectors are not type
+            compatible.
         
         \see \ref ppi_connections
      */
-    void connect(connector::GenericActiveOutput & source, connector::GenericPassiveInput & target);
+    void connect(connector::OutputConnector & source, connector::InputConnector & target, ...);
 
-    /** \brief Connect modules
-        \see connect() */
+#else
+
+    void connect(connector::GenericActiveOutput & source, connector::GenericPassiveInput & target);
     void connect(connector::GenericPassiveOutput & source, connector::GenericActiveInput & target);
 
+#endif
+
 #ifndef DOXYGEN    
 
     template <class T, class C>
     void connect(T & source, C & target,
                  typename boost::disable_if< boost::is_base_of<connector::Connector, T> >::type * = 0,
-                 typename boost::enable_if< boost::is_base_of<connector::Connector, C> >::type * = 0);
+                 typename boost::enable_if< boost::is_base_of<connector::Connector, C> >::type * = 0,
+                 typename boost::disable_if< boost::is_base_of<connector::Jack, T> >:: type * = 0);
 
     template <class C, class T>
     void connect(C & source, T & target,
                  typename boost::enable_if< boost::is_base_of<connector::Connector, C> >::type * = 0,
-                 typename boost::disable_if< boost::is_base_of<connector::Connector,T> >::type * = 0);
+                 typename boost::disable_if< boost::is_base_of<connector::Connector,T> >::type * = 0,
+                 typename boost::disable_if< boost::is_base_of<connector::Jack, T> >:: type * = 0);
 
     template <class T1, class T2>
     void connect(T1 & source, T2 & target,
                  typename boost::disable_if< boost::is_base_of<connector::Connector, T1> >::type * = 0,
-                 typename boost::disable_if< boost::is_base_of<connector::Connector, T2> >::type * = 0);
+                 typename boost::disable_if< boost::is_base_of<connector::Connector, T2> >::type * = 0,
+                 typename boost::disable_if< boost::is_base_of<connector::Jack, T1> >:: type * = 0,
+                 typename boost::disable_if< boost::is_base_of<connector::Jack, T2> >:: type * = 0);
 
 #endif