--- 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 @@
+/****************************************************************************** + *****************************************************************************/ + GPlateLibraryTagsForeachFunc func; +} GPlateLibraryTagsForeachData; +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); +gplate_library_tags_foreach(GPlateLibraryTagsForeachFunc func, gpointer data) { + GPlateLibraryTagsForeachData d = { 0, }; + gplate_library_lazy_init(); + 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 @@
+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);