X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FMultiConnectorMixin.hh;h=1619eca556af3b0ab165c0f2778f7ecc45463e0f;hb=482523171f06cf239fd7e8c991f81711c02cf0ba;hp=b386e0166cb09a133b74bc95b1f4858211f10262;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/MultiConnectorMixin.hh b/senf/PPI/MultiConnectorMixin.hh index b386e01..1619eca 100644 --- a/senf/PPI/MultiConnectorMixin.hh +++ b/senf/PPI/MultiConnectorMixin.hh @@ -27,21 +27,21 @@ #define HH_SENF_PPI_MultiConnectorMixin_ 1 // Custom includes -#include "../config.hh" +#include #include #include #include #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