1 ///////////////////////////////////////////////////////////////////////////
2 // Workfile: Subject.cxx
3 // Author: Daniel Giritzer <daniel@giritzer.eu>
5 // Description: Interface für von Observer zu überwachende Objekte.
7 ///////////////////////////////////////////////////////////////////////////
12 /////////////////////////////////////////////////
13 /// \brief Füge einen Observer hinzu.
14 /// \param o Shared Pointer auf ein Observer Objekt.
15 /////////////////////////////////////////////////
16 void Subject::subscribeObserver(Observer* o)
19 throw std::string("Nullpointer given as Observer!");
21 mObservers.push_back(o);
24 /////////////////////////////////////////////////
25 /// \brief Entferne ein Observer Objekt.
26 /// \param o Shared Pointer auf zu entfernendes Observer
28 /////////////////////////////////////////////////
29 void Subject::unsubscribeObserver(Observer* o)
32 throw std::string("Nullpointer given as Observer!");
34 if(!(std::find(mObservers.begin(), mObservers.end(), o) != mObservers.end()))
35 throw std::string("Given Observer has not subscribed!");
40 /////////////////////////////////////////////////
41 /// \brief Benachrichtige alle Observer.
42 /////////////////////////////////////////////////
43 void Subject::notifyObservers()
45 for(auto o : mObservers)
47 o->updateObserver(this);