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