#define HH_SENF_PPI_MultiConnectorMixin_ 1
// Custom includes
-#include "../config.hh"
+#include <senf/config.hh>
#include <boost/ptr_container/ptr_map.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/mpl/if.hpp>
#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 {
*/
template <class MultiConnectorSource, class Target, class A1>
MultiConnectorSource::ConnectorType & connect(
- MultiConnectorSource & source, Target & target, A1 const & a1);
+ MultiConnectorSource & source, A1 const & a1, Target & target);
/** \brief Connect arbitrary source to MultiConnector target
MultiConnectorTarget::ConnectorType & connect(
Source & source, MultiConnectorTarget & target, A1 const & a1);
+ template <class MultiConnectorSource, class MultiConnectorTarget, class A1, class A2>
+ std::pair<MultiConnectorSource::ConnectorType &, MultiConnectorTarget::ConnectorType &>
+ 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, \
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
tempalte <class A1>
ConnectorType_ & newConnector(A1 const & a1);
- // See above for an additional note regarding the boost::enable_if in the real
- // implementation
-
- template <class Source, class Target, class A1>
- friend Source::ConnectorType & senf::ppi::connect(Source & source,
- Target & target,
- A1 const & a1);
-
- template <class Source, class Target, class A1>
- friend Target::ConnectorType & senf::ppi::connect(Source & source,
- Target & target,
- A1 const & a1);
#endif
#ifndef DOXYGEN
# include BOOST_PP_ITERATE()
#endif
+
+ friend class detail::MultiConnectorMixinAccess;
ContainerType_ connectors_;
};
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_;
};
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