13#ifndef PUSHINGOBSERVED_HPP_
14#define PUSHINGOBSERVED_HPP_
25 template<
typename PushedClass >
72 template<
typename PushedClass >
81 template<
typename PushedClass >
89 template<
typename PushedClass >
92 PushedClass
const& pushedValue )
98 observerIterator = observerList.begin();
99 while( observerList.end() != observerIterator )
101 if( observerIterator->second )
103 observerIterator->first->respondToPush( pushedValue );
108 observerIterator = observerList.erase( observerIterator );
113 template<
typename PushedClass >
121 observerIterator = observerList.begin();
122 while( observerList.end() != observerIterator )
124 if( observerIterator->second )
126 observerIterator->first->respondToObservedSignal();
131 observerIterator = observerList.erase( observerIterator );
136 template<
typename PushedClass >
152 template<
typename PushedClass >
157 observerIterator = observerList.begin();
158 while( observerList.end() != observerIterator )
160 if( !(observerIterator->second) )
162 observerIterator = observerList.erase( observerIterator );
164 else if( leavingObserver == observerIterator->first )
167 &(observerIterator->second) );
168 observerIterator = observerList.erase( observerIterator );
177 template<
typename PushedClass >
183 observerIterator = observerList.begin();
184 while( observerList.end() != observerIterator )
186 if( observerIterator->second )
188 observerIterator->first->discardFlagFromObserved(
189 &(observerIterator->second) );
193 observerList.clear();
void discardFlagFromObserved(bool *const flagFromObserved)
void acceptFlagFromObserved(bool *const flagFromObserved)
void removeAllObservers()
std::list< observerWithBool > observerList
std::list< observerWithBool >::iterator observerWithBoolListIterator
std::pair< PushedToObserver< PushedClass > *, bool > observerWithBool
virtual void registerObserver(PushedToObserver< PushedClass > *const joiningObserver)
virtual void updateObservers(PushedClass const &pushedValue)
virtual void updateObservers()
virtual ~PushingObserved()
observerWithBoolListIterator observerIterator
virtual void removeObserver(PushedToObserver< PushedClass > *const leavingObserver)