Slot.cxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "Slot.hxx"
00023 #include <algorithm>
00024
00025 namespace SigSlot
00026 {
00027
00028 class ConnectionSearchPred
00029 {
00030 public:
00031
00032 ConnectionSearchPred( Connection::tConnectionId id )
00033 : mSoughtID( id )
00034 {
00035 }
00036
00037 bool operator()( const Connection& conn )
00038 {
00039 return ( conn.GetID() == mSoughtID );
00040 }
00041
00042 private:
00043
00044 Connection::tConnectionId mSoughtID;
00045 };
00046
00047 Slot::~Slot()
00048 {
00049 Unbind();
00050 }
00051
00052 void Slot::Unbind()
00053 {
00054 mActiveConnections.clear();
00055 }
00056
00057 void Slot::Bind( const Connection& conn )
00058 {
00059 mActiveConnections.push_back( conn );
00060 }
00061
00062 void Slot::Unbind( Connection::tConnectionId conn )
00063 {
00064 tConnectionIterator i = std::find_if( mActiveConnections.begin(),
00065 mActiveConnections.end(),
00066 ConnectionSearchPred( conn ) );
00067
00068 mActiveConnections.erase( i );
00069 }
00070
00071 }
00072