00001 // $Id: MultiConnectorMixin.ct 1742 2010-11-04 14:51:56Z g0dil $ 00002 // 00003 // Copyright (C) 2009 00004 // Fraunhofer (FOKUS) 00005 // Competence Center NETwork research (NET), St. Augustin, GERMANY 00006 // Stefan Bund <g0dil@berlios.de> 00007 // 00008 // This program is free software; you can redistribute it and/or modify 00009 // it under the terms of the GNU General Public License as published by 00010 // the Free Software Foundation; either version 2 of the License, or 00011 // (at your option) any later version. 00012 // 00013 // This program is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 // GNU General Public License for more details. 00017 // 00018 // You should have received a copy of the GNU General Public License 00019 // along with this program; if not, write to the 00020 // Free Software Foundation, Inc., 00021 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00022 00026 #include "MultiConnectorMixin.ih" 00027 00028 // Custom includes 00029 00030 #include <boost/lambda/lambda.hpp> 00031 00032 #define prefix_ 00033 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00034 00035 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00036 // senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,KeyType_,ContainerType_> 00037 00038 template <class Self_, class ConnectorType_, class KeyType_, class ContainerType_> 00039 prefix_ void 00040 senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,KeyType_,ContainerType_>:: 00041 disconnected(ConnectorType_ const & c) 00042 { 00043 typename ContainerType::iterator i ( 00044 find_if(connectors_.begin(), connectors_.end(), 00045 boost::bind(&ContainerType_::value_type::second,_1) == &c)); 00046 if (i != connectors_.end()) { 00047 static_cast<Self_*>(this)->connectorDestroy(c); 00048 connectors_.erase(i); 00049 } 00050 } 00051 00052 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00053 // senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,void,ContainerType_> 00054 00055 template <class Self_, class ConnectorType_, class ContainerType_> 00056 prefix_ void 00057 senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,void,ContainerType_>:: 00058 disconnected(ConnectorType_ const & c) 00059 { 00060 using boost::lambda::_1; 00061 00062 typename ContainerType::iterator i ( 00063 find_if(connectors_.begin(), connectors_.end(), &_1 == &c)); 00064 if (i != connectors_.end()) { 00065 static_cast<Self_*>(this)->connectorDestroy(c); 00066 connectors_.erase(i); 00067 } 00068 } 00069 00070 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00071 #undef prefix_ 00072 00073 00074 // Local Variables: 00075 // mode: c++ 00076 // fill-column: 100 00077 // comment-column: 40 00078 // c-file-style: "senf" 00079 // indent-tabs-mode: nil 00080 // ispell-local-dictionary: "american" 00081 // compile-command: "scons -u test" 00082 // End: