X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FMultiConnectorMixin.hh;h=1619eca556af3b0ab165c0f2778f7ecc45463e0f;hb=5615d25d63a162a6aa3cde53448277da1842a223;hp=c1546574cf65cf55e877c2f4604acb7d52e73fdc;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/PPI/MultiConnectorMixin.hh b/senf/PPI/MultiConnectorMixin.hh index c154657..1619eca 100644 --- a/senf/PPI/MultiConnectorMixin.hh +++ b/senf/PPI/MultiConnectorMixin.hh @@ -34,14 +34,14 @@ #include "Connectors.hh" #include "Setup.hh" -#include "MultiConnectorMixin.mpp" -#include "MultiConnectorMixin.ih" -///////////////////////////////hh.p//////////////////////////////////////// - #ifndef SENF_MULTI_CONNECTOR_MAX_ARGS #define SENF_MULTI_CONNECTOR_MAX_ARGS 3 #endif +#include "MultiConnectorMixin.mpp" +#include "MultiConnectorMixin.ih" +///////////////////////////////hh.p//////////////////////////////////////// + namespace senf { namespace ppi { @@ -61,7 +61,7 @@ namespace ppi { */ template MultiConnectorSource::ConnectorType & connect( - MultiConnectorSource & source, Target & target, A1 const & a1); + MultiConnectorSource & source, A1 const & a1, Target & target); /** \brief Connect arbitrary source to MultiConnector target @@ -73,9 +73,14 @@ namespace ppi { MultiConnectorTarget::ConnectorType & connect( Source & source, MultiConnectorTarget & target, A1 const & a1); + template + std::pair + connect( + MultiConnectorSource & source, MultiConnectorTarget & target, A1 const & a1, A2 const & a2); + #else - // Include 'senf::ppi::namespace member declarations' from MultiConnectorMixin.mpp + // Include 'senf::ppi namespace member declarations' from MultiConnectorMixin.mpp # define BOOST_PP_ITERATION_PARAMS_1 (4, ( \ 0, \ SENF_MULTI_CONNECTOR_MAX_ARGS, \ @@ -87,6 +92,8 @@ namespace ppi { namespace module { + namespace detail { class MultiConnectorMixinAccess; } + /** \brief Multi connector management This mixin provides a module with support for a runtime configurable number of input or @@ -249,18 +256,6 @@ namespace module { tempalte ConnectorType_ & newConnector(A1 const & a1); - // See above for an additional note regarding the boost::enable_if in the real - // implementation - - template - friend Source::ConnectorType & senf::ppi::connect(Source & source, - Target & target, - A1 const & a1); - - template - friend Target::ConnectorType & senf::ppi::connect(Source & source, - Target & target, - A1 const & a1); #endif #ifndef DOXYGEN @@ -273,6 +268,8 @@ namespace module { # include BOOST_PP_ITERATE() #endif + + friend class detail::MultiConnectorMixinAccess; ContainerType_ connectors_; }; @@ -323,6 +320,15 @@ namespace module { 1 )) # include BOOST_PP_ITERATE() +# define BOOST_PP_ITERATION_PARAMS_1 (4, ( \ + 0, \ + 2*SENF_MULTI_CONNECTOR_MAX_ARGS, \ + SENF_ABSOLUTE_INCLUDE_PATH(PPI/MultiConnectorMixin.mpp), \ + 9 )) +# include BOOST_PP_ITERATE() + + friend class detail::MultiConnectorMixinAccess; + ContainerType_ connectors_; }; @@ -364,6 +370,15 @@ namespace module { SENF_ABSOLUTE_INCLUDE_PATH(PPI/MultiConnectorMixin.mpp), \ 1 )) # include BOOST_PP_ITERATE() + +# define BOOST_PP_ITERATION_PARAMS_1 (4, ( \ + 0, \ + 2*SENF_MULTI_CONNECTOR_MAX_ARGS, \ + SENF_ABSOLUTE_INCLUDE_PATH(PPI/MultiConnectorMixin.mpp), \ + 9 )) +# include BOOST_PP_ITERATE() + + friend class detail::MultiConnectorMixinAccess; }; #endif