grim/gplate

0dca6bccdacb
Parents c4d20ffaecd2
Children fb092783fc85
Added gplate_library_tag_foreach
--- a/gplate/gplate-library.c Fri Feb 08 00:11:26 2008 -0600
+++ b/gplate/gplate-library.c Fri Feb 08 02:38:11 2008 -0600
@@ -449,3 +449,31 @@
return function;
}
+
+/******************************************************************************
+ * For each stuff
+ *****************************************************************************/
+typedef struct {
+ GPlateLibraryTagsForeachFunc func;
+ gpointer data;
+} GPlateLibraryTagsForeachData;
+
+static void
+gplate_library_tags_foreach_helper(gpointer k, gpointer v, gpointer d) {
+ GPlateLibraryTagsForeachData *data = (GPlateLibraryTagsForeachData *)d;
+ GType t = GPOINTER_TO_SIZE(k);
+
+ data->func(t, data->data);
+}
+
+void
+gplate_library_tags_foreach(GPlateLibraryTagsForeachFunc func, gpointer data) {
+ GPlateLibraryTagsForeachData d = { 0, };
+
+ gplate_library_lazy_init();
+
+ d.func = func;
+ d.data = data;
+
+ g_hash_table_foreach(tags, gplate_library_tags_foreach_helper, &d);
+}
--- a/gplate/gplate-library.h Fri Feb 08 00:11:26 2008 -0600
+++ b/gplate/gplate-library.h Fri Feb 08 02:38:11 2008 -0600
@@ -26,6 +26,8 @@
G_BEGIN_DECLS
+typedef void (*GPlateLibraryTagsForeachFunc)(GType tag, gpointer data);
+
gboolean gplate_library_add_function(const gchar *name, GType function, GError **error);
gboolean gplate_library_remove_function(const gchar *name, GError **error);
@@ -38,7 +40,9 @@
gboolean gplate_library_add_bound_function(const gchar *name, GType function, GType tag, GError **error);
gboolean gplate_library_lookup_function(const gchar *name, GType *function, GType *tag, GError **error);
-GType gplate_library_lookup_function_for_tag(const gchar *name, GType tag, GError **error);
+GType gplate_library_lookup_function_for_tag(const gchar *name, GType tag, GError **error);
+
+void gplate_library_tags_foreach(GPlateLibraryTagsForeachFunc func, gpointer data);
G_END_DECLS