From 5a435fae116df56e1af2d5daa38718ecd2edaebc Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Fri, 25 Nov 2022 21:26:34 +0200 Subject: [PATCH] event-dispatcher: expose iterator to iterate over the registered hooks --- lib/wp/event-dispatcher.c | 15 +++++++++++++++ lib/wp/event-dispatcher.h | 3 +++ 2 files changed, 18 insertions(+) diff --git a/lib/wp/event-dispatcher.c b/lib/wp/event-dispatcher.c index 438bcef5..064f0632 100644 --- a/lib/wp/event-dispatcher.c +++ b/lib/wp/event-dispatcher.c @@ -603,3 +603,18 @@ wp_event_dispatcher_unregister_hook (WpEventDispatcher * self, wp_event_hook_set_dispatcher (hook, NULL); g_ptr_array_remove_fast (self->hooks, hook); } + +/*! + * \brief Returns an iterator to iterate over all the registered hooks + * \ingroup wpeventdispatcher + * + * \param self the event dispatcher + * \return (transfer full): a new iterator + */ +WpIterator * +wp_event_dispatcher_new_hooks_iterator (WpEventDispatcher * self) +{ + GPtrArray *items = + g_ptr_array_copy (self->hooks, (GCopyFunc) g_object_ref, NULL); + return wp_iterator_new_ptr_array (items, WP_TYPE_EVENT_HOOK); +} diff --git a/lib/wp/event-dispatcher.h b/lib/wp/event-dispatcher.h index 95c599e3..b33fc283 100644 --- a/lib/wp/event-dispatcher.h +++ b/lib/wp/event-dispatcher.h @@ -85,6 +85,9 @@ WP_API void wp_event_dispatcher_unregister_hook (WpEventDispatcher * self, WpEventHook * hook); +WP_API +WpIterator * wp_event_dispatcher_new_hooks_iterator (WpEventDispatcher * self); + G_END_DECLS #endif