00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00026 #ifndef HH_SENF_PPI_Setup_
00027 #define HH_SENF_PPI_Setup_ 1
00028
00029
00030 #include <boost/type_traits.hpp>
00031 #include <boost/utility/enable_if.hpp>
00032 #include "predecl.hh"
00033
00034
00035
00036
00037 namespace senf {
00038 namespace ppi {
00039
00040 namespace detail {
00041 struct DisableStandardInput {};
00042 struct DisableStandardOutput {};
00043 struct DisableStandardConnect : public DisableStandardInput, public DisableStandardOutput {};
00044 }
00045
00046 #ifdef DOXYGEN
00047
00071 void connect(connector::OutputConnector & source, connector::InputConnector & target, ...);
00072
00073 #else
00074
00075 void connect(connector::GenericActiveOutput & source, connector::GenericPassiveInput & target);
00076 void connect(connector::GenericPassiveOutput & source, connector::GenericActiveInput & target);
00077
00078 #endif
00079
00080 #ifndef DOXYGEN
00081
00082 template <class T, class C>
00083 void connect(T & source, C & target,
00084 typename boost::disable_if< boost::is_base_of<connector::Connector, T> >::type * = 0,
00085 typename boost::enable_if< boost::is_base_of<connector::Connector, C> >::type * = 0,
00086 typename boost::disable_if< boost::is_base_of<detail::DisableStandardOutput, T> >::type * = 0);
00087
00088 template <class C, class T>
00089 void connect(C & source, T & target,
00090 typename boost::enable_if< boost::is_base_of<connector::Connector, C> >::type * = 0,
00091 typename boost::disable_if< boost::is_base_of<connector::Connector,T> >::type * = 0,
00092 typename boost::disable_if< boost::is_base_of<detail::DisableStandardInput, T> >::type * = 0);
00093
00094 template <class T1, class T2>
00095 void connect(T1 & source, T2 & target,
00096 typename boost::disable_if< boost::is_base_of<connector::Connector, T1> >::type * = 0,
00097 typename boost::disable_if< boost::is_base_of<connector::Connector, T2> >::type * = 0,
00098 typename boost::disable_if< boost::is_base_of<detail::DisableStandardOutput, T1> >:: type * = 0,
00099 typename boost::disable_if< boost::is_base_of<detail::DisableStandardInput, T2> >:: type * = 0);
00100
00101 #endif
00102
00116 void run();
00117
00124 void init();
00125
00126 }}
00127
00128
00129 #include "Setup.cci"
00130
00131 #include "Setup.cti"
00132 #endif
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143