SourceXtractorPlusPlus 0.21
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
Observable.h
Go to the documentation of this file.
1
23#ifndef _SEUTILS_OBSERVABLE_H
24#define _SEUTILS_OBSERVABLE_H
25
26#include <memory>
27#include <list>
28
29namespace SourceXtractor {
30
37template <class T>
38class Observer {
39public:
40 virtual ~Observer() = default;
41 virtual void handleMessage(const T& message) = 0;
42};
43
50template<class T>
52
53public:
54
56 virtual ~Observable() = default;
57
62
67
68protected:
69
70 // Notify all registered Observers with the given message
71 void notifyObservers(const T& message) const {
72 for (auto& observer : m_observers) {
73 observer->handleMessage(message);
74 }
75 }
76
77private:
79
80}; /* End of Observable class */
81
82} /* namespace SourceXtractor */
83
84
85#endif
Implements the Observer pattern. Notifications will be made using a message of type T.
Definition Observable.h:51
virtual void addObserver(std::shared_ptr< Observer< T > > observer)
Adds an Observer that will be notified when notify Observers is called.
Definition Observable.h:59
std::list< std::shared_ptr< Observer< T > > > m_observers
Definition Observable.h:78
void notifyObservers(const T &message) const
Definition Observable.h:71
virtual void removeObserver(std::shared_ptr< Observer< T > > observer)
Removes a previously added Observer from the list of Observers to notify.
Definition Observable.h:64
virtual ~Observable()=default
Destructor.
Observer interface to be used with Observable to implement the Observer pattern.
Definition Observable.h:38
virtual void handleMessage(const T &message)=0
virtual ~Observer()=default