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