LeviLamina
Loading...
Searching...
No Matches
Subject.h
1
#pragma once
2
3
#include "mc/_HeaderOutputPredefine.h"
4
#include "mc/deps/core/utility/SingleThreadedLock.h"
5
6
namespace
Core {
7
8
template
<
class
ObserverType,
class
LockType>
9
class
Subject
{
10
public
:
11
LockType mLock;
12
std::vector<gsl::not_null<ObserverType*>> mObservers;
13
14
LockType& getLock() {
return
mLock; }
15
void
removeObserver(ObserverType& observer) {
16
std::lock_guard<LockType> l{getLock()};
17
erase_if(mObservers, [&](
auto
& v) {
return
v.get() == std::addressof(observer); });
18
}
19
20
public
:
21
Subject
() =
default
;
22
~Subject
();
23
Subject
(
Subject
const
&) =
delete
;
24
Subject
& operator=(
Subject
const
&) =
delete
;
25
};
26
27
}
// namespace Core
Core::Subject
Definition
Subject.h:9
src
mc
deps
core
utility
Subject.h
Generated on Sat Apr 26 2025 05:55:27 for LeviLamina by
1.12.0