17 #ifndef HH_SENF_PPI_MultiConnectorMixin_ 18 #define HH_SENF_PPI_MultiConnectorMixin_ 1 21 #include <senf/config.hh> 22 #include <boost/ptr_container/ptr_map.hpp> 23 #include <boost/ptr_container/ptr_vector.hpp> 24 #include <boost/mpl/if.hpp> 47 template <
class MultiConnectorSource,
class Target,
class A1>
48 MultiConnectorSource::ConnectorType &
connect(
49 MultiConnectorSource & source, A1
const & a1, Target & target);
57 template <
class Source,
class MultiConnectorTarget,
class A1>
58 MultiConnectorTarget::ConnectorType &
connect(
59 Source & source, MultiConnectorTarget & target, A1
const & a1);
61 template <
class MultiConnectorSource,
class MultiConnectorTarget,
class A1,
class A2>
62 std::pair<MultiConnectorSource::ConnectorType &, MultiConnectorTarget::ConnectorType &>
64 MultiConnectorSource & source, MultiConnectorTarget & target, A1
const & a1, A2
const & a2);
69 # define BOOST_PP_ITERATION_PARAMS_1 (4, ( \ 71 SENF_MULTI_CONNECTOR_MAX_ARGS, \ 72 SENF_ABSOLUTE_INCLUDE_PATH(PPI/MultiConnectorMixin.mpp), \ 74 # include BOOST_PP_ITERATE() 80 namespace detail {
struct MultiConnectorMixinAccess; }
237 template <
class Self_,
238 class ConnectorType_,
239 class KeyType_ = void,
240 class ContainerType_ =
typename detail::MultiConnectorDefaultContainer<KeyType_, ConnectorType_>::type>
242 :
private detail::MultiConnectorSelectBase<ConnectorType_>::type
250 ContainerType_ & connectors();
251 ContainerType_
const & connectors()
const;
253 void connectorDestroy(ConnectorType
const &);
260 # define BOOST_PP_ITERATION_PARAMS_1 (4, ( \ 262 SENF_MULTI_CONNECTOR_MAX_ARGS, \ 263 SENF_ABSOLUTE_INCLUDE_PATH(PPI/MultiConnectorMixin.mpp), \ 265 # include BOOST_PP_ITERATE() 269 void disconnected(ConnectorType_
const & c);
271 friend struct detail::MultiConnectorMixinAccess;
272 friend class detail::MultiConnectorWrapper<Self_,ConnectorType_>;
274 ContainerType_ connectors_;
279 template <
class Self_,
280 class ConnectorType_,
281 class ContainerType_>
283 :
private detail::MultiConnectorSelectBase<ConnectorType_>::type
291 ContainerType_ & connectors();
292 ContainerType_
const & connectors()
const;
294 void connectorDestroy(ConnectorType
const &);
299 # define BOOST_PP_ITERATION_PARAMS_1 (4, ( \ 301 SENF_MULTI_CONNECTOR_MAX_ARGS, \ 302 SENF_ABSOLUTE_INCLUDE_PATH(PPI/MultiConnectorMixin.mpp), \ 304 # include BOOST_PP_ITERATE() 306 void disconnected(ConnectorType_
const & c);
308 friend struct detail::MultiConnectorMixinAccess;
309 friend class detail::MultiConnectorWrapper<Self_,ConnectorType_>;
311 ContainerType_ connectors_;
314 template <
class Self_,
315 class ConnectorType_>
317 :
private detail::MultiConnectorSelectBase<ConnectorType_>::type
325 # define BOOST_PP_ITERATION_PARAMS_1 (4, ( \ 327 SENF_MULTI_CONNECTOR_MAX_ARGS, \ 328 SENF_ABSOLUTE_INCLUDE_PATH(PPI/MultiConnectorMixin.mpp), \ 330 # include BOOST_PP_ITERATE() 332 void disconnected(ConnectorType_
const & c);
334 friend struct detail::MultiConnectorMixinAccess;
335 friend class detail::MultiConnectorWrapper<Self_,ConnectorType_>;
ConnectorType_ ConnectorType
Type of MultiConnector connector.
Multi-Connector management.
ContainerType_ ContainerType
Type of connector container.
void connect(connector::FastActiveOutput< PacketType > &source, connector::FastPassiveInput< PacketType > &target)