SourceXtractorPlusPlus
0.11
Please provide a description of the project.
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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
std::shared_ptr
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::Observer::handleMessage
virtual void handleMessage(const T &message)=0
SourceXtractor::Observer::~Observer
virtual ~Observer()=default
SourceXtractor::Observable
Implements the Observer pattern. Notifications will be made using a message of type T...
Definition:
Observable.h:51
std::list
STL class.
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::m_observers
std::list< std::shared_ptr< Observer< T > > > m_observers
Definition:
Observable.h:78
SourceXtractor::Observer
Observer interface to be used with Observable to implement the Observer pattern.
Definition:
Observable.h:38
SourceXtractor::Observable::~Observable
virtual ~Observable()=default
Destructor.
Generated by
1.8.5