Chrysalis - Pattern
Toggle main menu visibility
Loading...
Searching...
No Matches
BaseObservable.h
Go to the documentation of this file.
1
#ifndef CHRYSALIS_BASEOBSERVABLE_H
2
#define CHRYSALIS_BASEOBSERVABLE_H
3
4
#include <set>
5
#include <mutex>
6
11
namespace
Chrysalis
{
12
template
<
typename
T>
13
class
BaseObservable
{
14
protected
:
15
explicit
BaseObservable
() =
default
;
16
virtual
~BaseObservable
() =
default
;
17
public
:
18
template
<
typename
... Args,
typename
... CallArgs>
19
void
notify
(
void
(T::*function)(Args...), CallArgs&&...
args
)
const
{
20
std::lock_guard lock(mutex_);
21
for
(
const
auto
& observer: observers_) {
22
(observer->*function)(std::forward<CallArgs>(
args
)...);
23
}
24
}
25
void
addObserver
(T* observer) {
26
std::lock_guard lock(mutex_);
27
observers_.insert(observer);
28
}
29
void
removeObserver
(T* observer) {
30
std::lock_guard lock(mutex_);
31
observers_.erase(observer);
32
}
33
private
:
34
std::set<T*> observers_;
35
mutable
std::mutex mutex_;
36
};
37
}
39
40
#endif
//CHRYSALIS_BASEOBSERVABLE_H
Chrysalis::BaseObservable::~BaseObservable
virtual ~BaseObservable()=default
Chrysalis::BaseObservable::addObserver
void addObserver(T *observer)
Definition
BaseObservable.h:25
Chrysalis::BaseObservable::removeObserver
void removeObserver(T *observer)
Definition
BaseObservable.h:29
Chrysalis::BaseObservable::notify
void notify(void(T::*function)(Args...), CallArgs &&... args) const
Definition
BaseObservable.h:19
Chrysalis::BaseObservable::BaseObservable
BaseObservable()=default
Chrysalis::args
Definition
Argument.h:26
Chrysalis
Definition
Argument.h:9
pattern
include
observers
BaseObservable.h
Generated by
1.17.0