lxgui
gui_event_emitter.hpp
1 #ifndef LXGUI_GUI_EVENT_EMITTER_HPP
2 #define LXGUI_GUI_EVENT_EMITTER_HPP
3 
4 #include "lxgui/gui_event_data.hpp"
5 #include "lxgui/lxgui.hpp"
6 #include "lxgui/utils_signal.hpp"
7 
8 #include <string>
9 #include <unordered_map>
10 
11 namespace lxgui::gui {
12 
14 using event_handler_signature = void(const event_data&);
15 
18 
21 
24 public:
26  event_emitter() = default;
27 
28  // Non-copiable, non-movable
29  event_emitter(const event_emitter&) = delete;
33 
46  register_event(const std::string& event_name, event_handler_function callback);
47 
53  void fire_event(const std::string& event_name, event_data data = event_data{});
54 
55 private:
56  std::unordered_map<std::string, event_signal> registered_event_list_;
57 };
58 
59 } // namespace lxgui::gui
60 
61 #endif
Stores a variable number of arguments for an event.
Generates events and keep tracks of registered callbacks.
void fire_event(const std::string &event_name, event_data data=event_data{})
Emmit a new event.
event_emitter & operator=(event_emitter &&)=delete
utils::connection register_event(const std::string &event_name, event_handler_function callback)
Registers a callback to an event.
event_emitter()=default
Default constructor.
event_emitter(const event_emitter &)=delete
event_emitter & operator=(const event_emitter &)=delete
event_emitter(event_emitter &&)=delete
Object representing the connection between a slot and a signal.
Generic class for observing and triggering events.
std::function< T > function_type
Type of the callable function stored in a slot. Can use any function/delegate type here,...
void(const event_data &) event_handler_signature
Signature of event handler.
event_signal::function_type event_handler_function
C++ function type for UI script handlers.