X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FModule.cc;h=6638cb91ecc92c834f5d5879f62681c5d4d96f97;hb=7ee689fe38d66aa3a0004d55e8708750d35adc0b;hp=137629028b38d0bf4183983935af525d9f131b95;hpb=7661548b20e6c7627f54bff87e0758396fd523ef;p=senf.git diff --git a/senf/PPI/Module.cc b/senf/PPI/Module.cc index 1376290..6638cb9 100644 --- a/senf/PPI/Module.cc +++ b/senf/PPI/Module.cc @@ -33,6 +33,47 @@ //-///////////////////////////////////////////////////////////////////////////////////////////////// //-///////////////////////////////////////////////////////////////////////////////////////////////// +// senf::ppi::module::Module + +//-///////////////////////////////////////////////////////////////////////////////////////////////// +// private members + +prefix_ void senf::ppi::module::Module::registerConnector(connector::Connector & connector) +{ + if (std::find(connectorRegistry_.begin(), connectorRegistry_.end(), &connector) + == connectorRegistry_.end()) { + connectorRegistry_.push_back(&connector); + connector.setModule(*this); + } +} + +prefix_ void senf::ppi::module::Module::unregisterConnector(connector::Connector & connector) +{ + ConnectorRegistry::iterator i (std::find(connectorRegistry_.begin(), connectorRegistry_.end(), + &connector)); + if (i != connectorRegistry_.end()) + connectorRegistry_.erase(i); + + routes_.erase_if(boost::bind(&RouteBase::hasConnector, _1, boost::cref(connector))); +} + +prefix_ senf::ppi::RouteBase & +senf::ppi::module::Module::addRoute(std::auto_ptr route) +{ + routes_.push_back(route.release()); + return routes_.back(); +} + +//-///////////////////////////////////////////////////////////////////////////////////////////////// +// protected members + +prefix_ void senf::ppi::module::Module::noroute(connector::Connector & connector) +{ + registerConnector(connector); + connector.setModule(*this); +} + +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_ //#include "Module.mpp"