SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
Connection.h
1#pragma once
2
3#include <cstddef>
4
5namespace spark::patterns
6{
7 template <typename... Args>
8 class Signal;
9
10 template <typename... Args>
11 class Slot;
12}
13
14namespace spark::patterns::details
15{
16 template <typename... Args>
17 class Connection final
18 {
19 friend class Slot<Args...>;
20 friend class Signal<Args...>;
21
22 public:
23 explicit Connection(Signal<Args...>* signal, Slot<Args...>* slot, const std::size_t slot_key, const bool managed)
24 : m_signal(signal), m_slot(slot), m_slotKey(slot_key), m_managed(managed) {}
25
26 void releaseSlot()
27 {
28 m_slot->m_connection = nullptr;
29 if (m_managed)
30 delete m_slot;
31 }
32
33 private:
34 Signal<Args...>* m_signal;
35 Slot<Args...>* m_slot;
36 std::size_t m_slotKey;
37 bool m_managed = false;
38 };
39}
A signal is a class used to emit events.
Definition Slot.h:10
A slot is a connection between a signal and a callback.
Definition Slot.h:18
Definition Connection.h:18