46    template <DerivedEventArgs T>
 
   60            std::lock_guard<std::mutex> lock{ e.m_mutex };
 
   61            m_handlers = e.m_handlers;
 
 
   69            std::lock_guard<std::mutex> lock{ e.m_mutex };
 
   70            m_handlers = std::move(e.m_handlers);
 
 
   79            std::lock_guard<std::mutex> lock{ m_mutex };
 
   80            return m_handlers.size();
 
 
   89            std::lock_guard<std::mutex> lock{ m_mutex };
 
   90            m_handlers.push_back(handler);
 
   91            return HandlerId{ m_handlers.size() - 1 };
 
 
   99            std::lock_guard<std::mutex> lock{ m_mutex };
 
  100            if (
static_cast<size_t>(
id) < 0 || 
static_cast<size_t>(
id) >= m_handlers.size())
 
  104            m_handlers.erase(m_handlers.begin() + 
static_cast<size_t>(
id));
 
 
  110        void invoke(
const T& param) 
const noexcept 
  112            std::lock_guard<std::mutex> lock{ m_mutex };
 
  113            for (
const std::function<
void(
const T&)>& handler : m_handlers)
 
 
  155                std::lock_guard<std::mutex> lock{ m_mutex };
 
  156                std::lock_guard<std::mutex> lock2{ e.m_mutex };
 
  157                m_handlers = e.m_handlers;
 
 
  170                std::lock_guard<std::mutex> lock{ m_mutex };
 
  171                std::lock_guard<std::mutex> lock2{ e.m_mutex };
 
  172                m_handlers = std::move(e.m_handlers);
 
  173                e.m_handlers.clear();
 
 
  181        operator bool() const noexcept
 
 
  187        mutable std::mutex m_mutex;
 
  188        std::vector<std::function<void(
const T&)>> m_handlers;
 
 
 
void operator-=(HandlerId id) noexcept
Unsubscribes a handler from the event.
Definition event.h:134
 
Event(Event &&e) noexcept
Constructs an Event via move.
Definition event.h:67
 
HandlerId operator+=(const std::function< void(const T &)> &handler) noexcept
Subscribes a handler to the event.
Definition event.h:126
 
void invoke(const T ¶m) const noexcept
Invokes the event, calling all handlers.
Definition event.h:110
 
Event & operator=(const Event &e) noexcept
Copies an Event.
Definition event.h:151
 
void unsubscribe(HandlerId id) noexcept
Unsubscribes a handler from the event.
Definition event.h:97
 
Event & operator=(Event &&e) noexcept
Moves an Event.
Definition event.h:166
 
size_t count() const noexcept
Gets the number of handlers subscribed to the event.
Definition event.h:77
 
Event() noexcept=default
Constructs an Event.
 
HandlerId subscribe(const std::function< void(const T &)> &handler) noexcept
Subscribes a handler to the event.
Definition event.h:87
 
void operator()(const T ¶m) noexcept
Invokes the event, calling all handlers.
Definition event.h:142
 
HandlerId
The ID of a handler for an event.
Definition event.h:40