pidgin/pidgin

Parents ddc26be7f597
Children 671f2442e50e
Add _foreach functions to PurpleConversationManager and PurpleProtocolManager

Testing Done:
Compiled

Reviewed at https://reviews.imfreedom.org/r/799/
--- a/libpurple/purpleconversationmanager.c Tue Jul 13 15:23:59 2021 -0500
+++ b/libpurple/purpleconversationmanager.c Sat Jul 17 20:39:59 2021 -0500
@@ -178,6 +178,23 @@
NULL, NULL);
}
+void
+purple_conversation_manager_foreach(PurpleConversationManager *manager,
+ PurpleConversationManagerForeachFunc func,
+ gpointer data)
+{
+ GHashTableIter iter;
+ gpointer key;
+
+ g_return_if_fail(PURPLE_IS_CONVERSATION_MANAGER(manager));
+ g_return_if_fail(func != NULL);
+
+ g_hash_table_iter_init(&iter, manager->conversations);
+ while(g_hash_table_iter_next(&iter, &key, NULL)) {
+ func(PURPLE_CONVERSATION(key), data);
+ }
+}
+
GList *
purple_conversation_manager_get_all(PurpleConversationManager *manager) {
g_return_val_if_fail(PURPLE_IS_CONVERSATION_MANAGER(manager), NULL);
--- a/libpurple/purpleconversationmanager.h Tue Jul 13 15:23:59 2021 -0500
+++ b/libpurple/purpleconversationmanager.h Sat Jul 17 20:39:59 2021 -0500
@@ -44,6 +44,18 @@
PURPLE, CONVERSATION_MANAGER, GObject)
/**
+ * PurpleConversationManagerForeachFunc:
+ * @conversation: The #PurpleConversation instance.
+ * @data: User supplied data.
+ *
+ * A function to be used as a callback with
+ * purple_conversation_manager_foreach().
+ *
+ * Since: 3.0.0
+ */
+typedef void (*PurpleConversationManagerForeachFunc)(PurpleConversation *conversation, gpointer data);
+
+/**
* purple_conversation_manager_get_default:
*
* Gets the default instance of #PurpleConversationManager. This instance
@@ -96,6 +108,18 @@
gboolean purple_conversation_manager_is_registered(PurpleConversationManager *manager, PurpleConversation *conversation);
/**
+ * purple_conversation_manager_foreach:
+ * @manager: The #PurpleConversationManager instance.
+ * @func: (scope call): The #PurpleConversationManagerForeachFunc to call.
+ * @data: User data to pass to @func.
+ *
+ * Calls @func for each #PurpleConversation that @manager knows about.
+ *
+ * Since: 3.0.0
+ */
+void purple_conversation_manager_foreach(PurpleConversationManager *manager, PurpleConversationManagerForeachFunc func, gpointer data);
+
+/**
* purple_conversation_manager_get_all:
* @manager: The #PurpleConversationManager instance.
*
--- a/libpurple/purpleprotocolmanager.c Tue Jul 13 15:23:59 2021 -0500
+++ b/libpurple/purpleprotocolmanager.c Sat Jul 17 20:39:59 2021 -0500
@@ -218,6 +218,26 @@
return PURPLE_PROTOCOL(value);
}
+void
+purple_protocol_manager_foreach(PurpleProtocolManager *manager,
+ PurpleProtocolManagerForeachFunc func,
+ gpointer data)
+{
+ GHashTableIter iter;
+ PurpleProtocolManagerPrivate *priv = NULL;
+ gpointer value;
+
+ g_return_if_fail(PURPLE_IS_PROTOCOL_MANAGER(manager));
+ g_return_if_fail(func != NULL);
+
+ priv = purple_protocol_manager_get_instance_private(manager);
+
+ g_hash_table_iter_init(&iter, priv->protocols);
+ while(g_hash_table_iter_next(&iter, NULL, &value)) {
+ func(PURPLE_PROTOCOL(value), data);
+ }
+}
+
GList *
purple_protocol_manager_get_all(PurpleProtocolManager *manager) {
PurpleProtocolManagerPrivate *priv = NULL;
--- a/libpurple/purpleprotocolmanager.h Tue Jul 13 15:23:59 2021 -0500
+++ b/libpurple/purpleprotocolmanager.h Sat Jul 17 20:39:59 2021 -0500
@@ -88,6 +88,17 @@
};
/**
+ * PurpleProtocolManagerForeachFunc:
+ * @protocol: The #PurpleProtocol instance.
+ * @data: User supplied data.
+ *
+ * A function to be used as a callback with purple_protocol_manager_foreach().
+ *
+ * Since: 3.0.0
+ */
+typedef void (*PurpleProtocolManagerForeachFunc)(PurpleProtocol *protocol, gpointer data);
+
+/**
* purple_protocol_manager_get_default:
*
* Gets the default #PurpleProtocolManager instance.
@@ -142,6 +153,18 @@
PurpleProtocol *purple_protocol_manager_find(PurpleProtocolManager *manager, const gchar *id);
/**
+ * purple_protocol_manager_foreach:
+ * @manager: The #PurpleProtocolManager instance.
+ * @func: (scope call): The #PurpleProtocolManagerForeachFunc to call.
+ * @data: User data to pass to @func.
+ *
+ * Calls @func for each #PurpleProtocol that @manager knows about.
+ *
+ * Since: 3.0.0
+ */
+void purple_protocol_manager_foreach(PurpleProtocolManager *manager, PurpleProtocolManagerForeachFunc func, gpointer data);
+
+/**
* purple_protocol_manager_get_all:
* @manager: The #PurpleProtocolManager instance.
*