From cf65a0a65f25ddf1f21f84a63f5285b84571550f Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Sun, 31 Jul 2016 19:22:14 +0200 Subject: [PATCH] added Emitter::clearAll --- src/uvw/emitter.hpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/uvw/emitter.hpp b/src/uvw/emitter.hpp index 38dfc05a..a0b77fa7 100644 --- a/src/uvw/emitter.hpp +++ b/src/uvw/emitter.hpp @@ -20,6 +20,7 @@ class Emitter { struct BaseHandler { virtual ~BaseHandler() noexcept = default; virtual bool empty() const noexcept = 0; + virtual void clear() noexcept = 0; }; template @@ -33,6 +34,11 @@ class Emitter { return onceL.empty() && onL.empty(); } + void clear() noexcept override { + onceL.clear(); + onL.clear(); + } + Connection once(Listener f) { auto conn = onceL.insert(onceL.cbegin(), std::move(f)); return { onceL, std::move(conn) }; @@ -47,11 +53,6 @@ class Emitter { conn.first.erase(conn.second); } - void clear() noexcept { - onceL.clear(); - onL.clear(); - } - void publish(const E &event, T &ref) { for(auto &&listener: onceL) { listener(event, ref); } for(auto &&listener: onL) { listener(event, ref); } @@ -122,6 +123,12 @@ public: handler().clear(); } + void clearAll() noexcept { + for(auto &&h: handlers) { + h->clear(); + } + } + bool empty() const noexcept { bool empty = true;