/* * Author: Patrick-Christopher Mattulat * Company: Lynar Studios * E-Mail: webmaster@lynarstudios.com * Created: 2020-11-27 * Changed: 2020-11-27 * * */ #ifndef LS_STD_EVENT_HANDLER_HPP #define LS_STD_EVENT_HANDLER_HPP #include #include #include #include #include "Event.hpp" namespace ls_std { class EventHandler : public ls_std::Class { public: explicit EventHandler(ls_std::event_id _id); ~EventHandler() override = default; ls_std::event_id getId(); void notify(const ls_std::Event& _event); void subscribe(const std::shared_ptr& _listener); void unsubscribe(const std::shared_ptr& _listener); private: ls_std::event_id id {}; std::list> listeners {}; void _addListener(const std::shared_ptr& _listener); bool _hasListener(const std::shared_ptr& _listener); void _removeListener(const std::shared_ptr& _listener); }; } #endif