// ////////////////////////////////////////////////////////////////////////
// Implementation
+////////////////////////////////////////
+// Map container
+
template <class Self_, class ConnectorType_, class KeyType_, class ContainerType_>
mpp_TplParams()
prefix_ ConnectorType_ &
return * connectors_.insert(key, conn).first->second;
}
+////////////////////////////////////////
+// Vector container
+
template <class Self_, class ConnectorType_, class ContainerType_>
mpp_TplParams()
prefix_ ConnectorType_ &
return conn;
}
+////////////////////////////////////////
+// User managed container
+
+template <class Self_, class ConnectorType_>
+mpp_TplParams()
+prefix_ ConnectorType_ &
+senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,void,void>::
+newConnector(mpp_FnParams())
+{
+ std::auto_ptr<ConnectorType_> cp (new ConnectorType_);
+ ConnectorType_ & cref (*cp);
+ static_cast<Self_*>(this)->connectorSetup(cp mpp_CallParamsKomma());
+ return cref;
+}
+
+////////////////////////////////////////
+// senf::ppi::connect
+
template <class Source, class Target mpp_TplParamsKomma()>
typename boost::enable_if<
boost::is_base_of<senf::ppi::connector::OutputConnector, typename Source::ConnectorType>,
typename Source::ConnectorType & >::type
senf::ppi::connect(Source & source, Target & target mpp_FnParamsKomma())
{
- connect(source.newConnector(mpp_CallParams()), target);
+ typename Source::ConnectorType & c (source.newConnector(mpp_CallParams()));
+ connect(c, target);
+ return c;
}
template <class Source, class Target mpp_TplParamsKomma()>
typename Target::ConnectorType & >::type
senf::ppi::connect(Source & source, Target & target mpp_FnParamsKomma())
{
- connect(source, target.newConnector(mpp_CallParams()));
+ typename Target::ConnectorType & c (target.newConnector(mpp_CallParams()));
+ connect(source, c);
+ return c;
}
// ////////////////////////////////////////////////////////////////////////