A class to monitor events from the C++ side of things. More...
#include "eventHandler.h"
Public Types | |
typedef void | EventCallbackFunction(const Event *, void *) |
typedef void | EventFunction(const Event *) |
Public Member Functions | |
EventHandler (EventQueue *ev_queue) | |
bool | add_hook (const std::string &event_name, EventFunction *function) |
Adds the indicated function to the list of those that will be called when the named event is thrown. More... | |
bool | add_hook (const std::string &event_name, EventCallbackFunction *function, void *data) |
Adds the indicated function to the list of those that will be called when the named event is thrown. More... | |
virtual void | dispatch_event (const Event *event) |
Calls the hooks assigned to the indicated single event. More... | |
virtual TypeHandle | force_init_type () |
AsyncFuture * | get_future (const std::string &event_name) |
Returns a pending future that will be marked as done when the event is next fired. More... | |
virtual TypeHandle | get_type () const |
bool | has_hook (const std::string &event_name) const |
Returns true if there is any hook added on the indicated event name, false otherwise. More... | |
bool | has_hook (const std::string &event_name, EventFunction *function) const |
Returns true if there is the hook added on the indicated event name and function pointer, false otherwise. More... | |
bool | has_hook (const std::string &event_name, EventCallbackFunction *function, void *data) const |
Returns true if there is the hook added on the indicated event name, function pointer and callback data, false otherwise. More... | |
void | process_events () |
The main processing loop of the EventHandler. More... | |
void | remove_all_hooks () |
Removes all hooks assigned to all events. More... | |
bool | remove_hook (const std::string &event_name, EventFunction *function) |
Removes the indicated function from the named event hook. More... | |
bool | remove_hook (const std::string &event_name, EventCallbackFunction *function, void *data) |
Removes the indicated function from the named event hook. More... | |
bool | remove_hooks (const std::string &event_name) |
Removes all functions from the named event hook. More... | |
bool | remove_hooks_with (void *data) |
Removes all CallbackFunction hooks that have the indicated pointer as the associated data pointer. More... | |
void | write (std::ostream &out) const |
Public Member Functions inherited from TypedObject | |
TypedObject (const TypedObject ©)=default | |
TypedObject * | as_typed_object () |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
const TypedObject * | as_typed_object () const |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
int | get_best_parent_from_Set (const std::set< int > &) const |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. More... | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. More... | |
TypedObject & | operator= (const TypedObject ©)=default |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static EventHandler * | get_global_event_handler (EventQueue *queue=nullptr) |
Returns a pointer to the one global EventHandler object. More... | |
static void | init_type () |
Static Public Member Functions inherited from TypedObject | |
static TypeHandle | get_class_type () |
static void | init_type () |
This function is declared non-inline to work around a compiler bug in g++ 2.96. More... | |
Additional Inherited Members | |
Public Attributes inherited from TypedObject | |
get_type | |
A class to monitor events from the C++ side of things.
It maintains a set of "hooks", function pointers assigned to event names, and calls the appropriate hooks when the matching event is detected.
This class is not necessary when the hooks are detected and processed entirely by the scripting language, e.g. via Scheme hooks or the messenger in Python.
Definition at line 37 of file eventHandler.h.
bool EventHandler::add_hook | ( | const std::string & | event_name, |
EventFunction * | function | ||
) |
Adds the indicated function to the list of those that will be called when the named event is thrown.
Returns true if the function was successfully added, false if it was already defined on the indicated event name.
Definition at line 166 of file eventHandler.cxx.
bool EventHandler::add_hook | ( | const std::string & | event_name, |
EventCallbackFunction * | function, | ||
void * | data | ||
) |
Adds the indicated function to the list of those that will be called when the named event is thrown.
Returns true if the function was successfully added, false if it was already defined on the indicated event name. This version records an untyped pointer to user callback data.
Definition at line 185 of file eventHandler.cxx.
|
virtual |
Calls the hooks assigned to the indicated single event.
Definition at line 68 of file eventHandler.cxx.
Referenced by process_events().
AsyncFuture * EventHandler::get_future | ( | const std::string & | event_name | ) |
Returns a pending future that will be marked as done when the event is next fired.
Definition at line 37 of file eventHandler.cxx.
|
inlinestatic |
Returns a pointer to the one global EventHandler object.
If the global object has not yet been created, this will create it.
Definition at line 19 of file eventHandler.I.
bool EventHandler::has_hook | ( | const std::string & | event_name | ) | const |
Returns true if there is any hook added on the indicated event name, false otherwise.
Definition at line 197 of file eventHandler.cxx.
bool EventHandler::has_hook | ( | const std::string & | event_name, |
EventFunction * | function | ||
) | const |
Returns true if there is the hook added on the indicated event name and function pointer, false otherwise.
Definition at line 224 of file eventHandler.cxx.
bool EventHandler::has_hook | ( | const std::string & | event_name, |
EventCallbackFunction * | function, | ||
void * | data | ||
) | const |
Returns true if there is the hook added on the indicated event name, function pointer and callback data, false otherwise.
Definition at line 244 of file eventHandler.cxx.
void EventHandler::process_events | ( | ) |
The main processing loop of the EventHandler.
This function must be called periodically to service events. Walks through each pending event and calls its assigned hooks.
Definition at line 58 of file eventHandler.cxx.
References dispatch_event().
void EventHandler::remove_all_hooks | ( | ) |
Removes all hooks assigned to all events.
Definition at line 344 of file eventHandler.cxx.
Referenced by PandaFramework::close_framework().
bool EventHandler::remove_hook | ( | const std::string & | event_name, |
EventFunction * | function | ||
) |
Removes the indicated function from the named event hook.
Returns true if the hook was removed, false if it wasn't there in the first place.
Definition at line 264 of file eventHandler.cxx.
bool EventHandler::remove_hook | ( | const std::string & | event_name, |
EventCallbackFunction * | function, | ||
void * | data | ||
) |
Removes the indicated function from the named event hook.
Returns true if the hook was removed, false if it wasn't there in the first place. This version takes an untyped pointer to user callback data.
Definition at line 277 of file eventHandler.cxx.
bool EventHandler::remove_hooks | ( | const std::string & | event_name | ) |
Removes all functions from the named event hook.
Returns true if any functions were removed, false if there were no functions added to the hook.
Definition at line 289 of file eventHandler.cxx.
bool EventHandler::remove_hooks_with | ( | void * | data | ) |
Removes all CallbackFunction hooks that have the indicated pointer as the associated data pointer.
Definition at line 317 of file eventHandler.cxx.