ATTPCROOT
0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtData
AtDataSubject.h
Go to the documentation of this file.
1
#ifndef ATDATASUBJECT_H
2
#define ATDATASUBJECT_H
3
4
#include <set>
5
14
namespace
DataHandling
{
15
class
AtObserver;
16
24
class
AtSubject
{
25
private
:
26
std::set<AtObserver *> fObservers;
27
28
protected
:
29
AtSubject
() =
default
;
30
31
public
:
32
virtual
~AtSubject
() =
default
;
33
35
void
Attach
(
AtObserver
*observer);
37
void
Detach
(
AtObserver
*observer) { fObservers.erase(observer); }
39
void
Notify
();
40
};
41
50
template
<
typename
T>
51
class
AtSimpleType
:
public
AtSubject
{
52
protected
:
53
T
fData
;
54
55
public
:
56
AtSimpleType
(T data) {
fData
= data; }
// Must use assigment operator for primitive types.
57
T
Get
()
const
{
return
fData
; }
58
void
Set
(T data,
bool
notify =
true
)
59
{
60
if
(
fData
== data)
61
return
;
62
fData
= data;
63
if
(notify)
64
Notify
();
65
}
66
};
67
68
}
// namespace DataHandling
69
#endif
DataHandling::AtObserver
Definition:
AtDataObserver.h:12
DataHandling::AtSimpleType
Subject for any simple type.
Definition:
AtDataSubject.h:51
DataHandling::AtSubject::Detach
void Detach(AtObserver *observer)
Detach an observer to stop getting notified when this subject changes.
Definition:
AtDataSubject.h:37
DataHandling::AtSubject::Notify
void Notify()
Notify all attached subjects that something changed.
Definition:
AtDataSubject.cxx:7
DataHandling::AtSubject::~AtSubject
virtual ~AtSubject()=default
DataHandling
Definition:
AtDataObserver.h:4
DataHandling::AtSimpleType::AtSimpleType
AtSimpleType(T data)
Definition:
AtDataSubject.h:56
DataHandling::AtSubject::AtSubject
AtSubject()=default
DataHandling::AtSimpleType::Get
T Get() const
Definition:
AtDataSubject.h:57
DataHandling::AtSimpleType::fData
T fData
Definition:
AtDataSubject.h:53
DataHandling::AtSubject::Attach
void Attach(AtObserver *observer)
Attach an observer to get notified when this subject changes.
Definition:
AtDataSubject.cxx:12
DataHandling::AtSubject
Definition:
AtDataSubject.h:24
DataHandling::AtSimpleType::Set
void Set(T data, bool notify=true)
Definition:
AtDataSubject.h:58
Generated on Sat Nov 11 2023 15:30:37 for ATTPCROOT by
1.8.18