OXYGENHUB
◆ main openmsx / src / utils / Observer.hh
552 B · C++ · last changed chore(): initial commit 1 month ago source blame history raw
1
#ifndef OBSERVER_HH
2
#define OBSERVER_HH
3
4
namespace openmsx {
5
6
/**
7
 * Generic Gang-of-Four Observer class, templatized edition.
8
 */
9
template<typename T> class Observer
10
{
11
public:
12
	Observer(const Observer&) = delete;
13
	Observer(Observer&&) = delete;
14
	Observer& operator=(const Observer&) = delete;
15
	Observer& operator=(Observer&&) = delete;
16
17
	virtual void update(const T& subject) noexcept = 0;
18
	virtual void subjectDeleted(const T& /*subject*/) { /*nothing*/ }
19
20
protected:
21
	Observer() = default;
22
	~Observer() = default;
23
};
24
25
} // namespace openmsx
26
27
#endif