12#ifndef WSFOBSERVERSUBJECTLIST_HPP
13#define WSFOBSERVERSUBJECTLIST_HPP
20template<
typename OBSERVER,
typename SUBJECT>
33 void Attach(OBSERVER* aObserver, SUBJECT* aSubject)
36 assert(mObserverPtr == 0 || mObserverPtr == aObserver);
37 mObserverPtr = aObserver;
39 aSubject->AttachObserver(aObserver);
41 typename SubjectList::iterator i = std::find(mObservedSubjects.begin(), mObservedSubjects.end(), aSubject);
42 if (i == mObservedSubjects.end())
44 mObservedSubjects.push_back(aSubject);
50 return std::find(mObservedSubjects.begin(), mObservedSubjects.end(), aSubject) != mObservedSubjects.end();
56 assert(mObserverPtr != 0);
59 aSubjectPtr->DetatchObserver(mObserverPtr);
66 typename SubjectList::iterator i = std::find(mObservedSubjects.begin(), mObservedSubjects.end(), aSubjectPtr);
67 if (i != mObservedSubjects.end())
69 mObservedSubjects.erase(i);
77 for (
size_t i = 0; i < mObservedSubjects.size(); ++i)
79 mObservedSubjects[i]->DetachObserver(mObserverPtr);
81 mObservedSubjects.clear();
85 OBSERVER* mObserverPtr;
void Detatch(SUBJECT *aSubjectPtr)
Definition WsfObserverSubjectList.hpp:53
~WsfObserverSubjectList()
Definition WsfObserverSubjectList.hpp:31
std::vector< SUBJECT * > SubjectList
Definition WsfObserverSubjectList.hpp:24
void Attach(OBSERVER *aObserver, SUBJECT *aSubject)
Definition WsfObserverSubjectList.hpp:33
void RemoveAll()
Definition WsfObserverSubjectList.hpp:75
bool IsAttached(SUBJECT *aSubject) const
Definition WsfObserverSubjectList.hpp:48
bool Remove(SUBJECT *aSubjectPtr)
Definition WsfObserverSubjectList.hpp:64
WsfObserverSubjectList()
Definition WsfObserverSubjectList.hpp:26