#include <boost/mpl/and.hpp>
#include <boost/mpl/not.hpp>
#include <boost/tuple/tuple.hpp>
-#include <senf/Utils/type_traits.hh>
// ///////////////////////////mpp.p////////////////////////////////////////
#elif BOOST_PP_IS_ITERATING // ////////////////////////////////////////////
ConnectorType_ & newConnector( mpp_FnParams() );
// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==9 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
-// senf::ppi::module::MultiConnectorMixin member declaration 1..2*MAX_ARGS
-
-template <class Source, class Target mpp_TplParamsKomma()>
-static boost::tuple<typename Source::ConnectorType &, typename Target::ConnectorType &>
-connect_(Source & source, Target & target mpp_FnParamsKomma());
-
-// ////////////////////////////////////////////////////////////////////////
#elif BOOST_PP_ITERATION_FLAGS()==2 // ////////////////////////////////////
// ////////////////////////////////////////////////////////////////////////
// senf::ppi namespace member declaration 1..MAX_ARGS
senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,KeyType_,ContainerType_>::
newConnector(mpp_FnParams())
{
- std::auto_ptr<ConnectorType_> conn (new ConnectorType_);
+ std::auto_ptr<ConnectorType_> conn (new detail::MultiConnectorWrapper<Self_,ConnectorType_>);
KeyType_ key (static_cast<Self_*>(this)->connectorSetup(*conn mpp_CallParamsKomma()));
return * connectors_.insert(key, conn).first->second;
}
senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,void,ContainerType_>::
newConnector(mpp_FnParams())
{
- connectors_.push_back(new ConnectorType_);
+ connectors_.push_back(new detail::MultiConnectorWrapper<Self_,ConnectorType_>);
ConnectorType_ & conn (connectors_.back());
try { static_cast<Self_*>(this)->connectorSetup(conn mpp_CallParamsKomma()); }
- catch (...) { connectors_.pop_back(); throw; }
+ catch (...) { disconnected(conn); throw; }
return conn;
}
senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,void,void>::
newConnector(mpp_FnParams())
{
- std::auto_ptr<ConnectorType_> cp (new ConnectorType_);
+ std::auto_ptr<ConnectorType_> cp (new detail::MultiConnectorWrapper<Self_,ConnectorType_>);
ConnectorType_ & cref (*cp);
static_cast<Self_*>(this)->connectorSetup(cp mpp_CallParamsKomma());
return cref;