From 29f0a5d647c9674cbda8a083785a498acfb4cba4 Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Tue, 16 Jan 2024 10:17:19 +0100 Subject: [PATCH] simple signal without smart pointers --- libsrc/core/signal.hpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/libsrc/core/signal.hpp b/libsrc/core/signal.hpp index 082dd32b..bd9cd6f0 100644 --- a/libsrc/core/signal.hpp +++ b/libsrc/core/signal.hpp @@ -2,6 +2,7 @@ #define NGCORE_SIGNALS_HPP #include +#include #include namespace ngcore @@ -43,6 +44,36 @@ namespace ngcore } inline bool GetEmitting() const { return is_emitting; } }; + + + + + class SimpleSignal + { + private: + std::map> funcs; + public: + SimpleSignal() = default; + + template + void Connect(void* var, FUNC f) + { + funcs[var] = f; + } + + void Remove(void* var) + { + funcs.erase(var); + } + + inline void Emit() + { + for (auto [key,f] : funcs) + f(); + } + }; + + } // namespace ngcore #endif // NGCORE_SIGNALS_HPP