SourceXtractorPlusPlus
0.16
Please provide a description of the project.
SEUtils
SEUtils
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
29
namespace
SourceXtractor
{
30
37
template
<
class
T>
38
class
Observer
{
39
public
:
40
virtual
~Observer
() =
default
;
41
virtual
void
handleMessage
(
const
T& message) = 0;
42
};
43
50
template
<
class
T>
51
class
Observable
{
52
53
public
:
54
56
virtual
~Observable
() =
default
;
57
59
virtual
void
addObserver
(
std::shared_ptr
<
Observer<T>
> observer) {
60
m_observers
.push_back(observer);
61
}
62
64
virtual
void
removeObserver
(
std::shared_ptr
<
Observer<T>
> observer) {
65
m_observers
.remove(observer);
66
}
67
68
protected
:
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
77
private
:
78
std::list<std::shared_ptr<Observer<T>
>>
m_observers
;
79
80
};
/* End of Observable class */
81
82
}
/* namespace SourceXtractor */
83
84
85
#endif
SourceXtractor::Observable
Implements the Observer pattern. Notifications will be made using a message of type T.
Definition:
Observable.h:51
SourceXtractor::Observable::m_observers
std::list< std::shared_ptr< Observer< T > > > m_observers
Definition:
Observable.h:78
SourceXtractor::Observable::notifyObservers
void notifyObservers(const T &message) const
Definition:
Observable.h:71
SourceXtractor::Observable::addObserver
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
SourceXtractor::Observable::removeObserver
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
SourceXtractor::Observable::~Observable
virtual ~Observable()=default
Destructor.
SourceXtractor::Observer
Observer interface to be used with Observable to implement the Observer pattern.
Definition:
Observable.h:38
SourceXtractor::Observer::handleMessage
virtual void handleMessage(const T &message)=0
SourceXtractor::Observer::~Observer
virtual ~Observer()=default
std::list
SourceXtractor
Definition:
Aperture.h:30
std::shared_ptr
Generated by
1.9.1