SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
Slot.h
1#pragma once
2
3#include "spark/patterns/details/Connection.h"
4
5#include <functional>
6
7namespace spark::patterns
8{
9 template <typename... Args>
10 class Signal;
11
16 template <typename... Args>
17 class Slot final
18 {
19 friend class details::Connection<Args...>;
20 friend class Signal<Args...>;
21
22 public:
23 explicit Slot();
24
29 explicit Slot(const std::function<void(Args...)>& f);
30
35 explicit Slot(std::function<void(Args...)>&& f);
36
43 template <class T>
44 Slot(T* target, void (T::*method)(Args...));
45
52 template <class T>
53 Slot(T* target, void (T::*method)(Args...) const);
54
55 ~Slot();
56
57 Slot(const Slot& slot);
58 Slot(Slot&& slot) noexcept;
59 Slot& operator=(const Slot& slot);
60 Slot& operator=(Slot&& slot) noexcept;
61
66 [[nodiscard]] bool isConnected() const;
67
71 void disconnect();
72
73 private:
78 void move(Slot* slot);
79
80 private:
81 std::function<void(Args...)> m_callback;
82 details::Connection<Args...>* m_connection = nullptr;
83 };
84}
85
86#include "spark/patterns/impl/Slot.h"
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
bool isConnected() const
Checks if this slot is connected to a signal.
Definition Slot.h:72
void disconnect()
Disconnects this slot from the signal.
Definition Slot.h:78
Slot(T *target, void(T::*method)(Args...) const)
Instantiates a slot from a const method pointer.
Definition Connection.h:18