+Sun Oct 29 01:58:44 2000 Owen Taylor <otaylor@redhat.com>
+
+ * gsignal.h: Add g_type_signals() - a function to list
+ all signals for a given type.
+
Sat Oct 28 00:28:09 2000 Tim Janik <timj@gtk.org>
* gclosure.c (g_closure_add_marshal_guards): fixed notifier position
G_UNLOCK (g_signal_mutex);
}
+/**
+ * gtk_signals_list:
+ * @itype: an
+ * @n_ids: location to store number of ids in @itype
+ *
+ * List all signals for a given type.
+ *
+ * Return value: Array
+ **/
+guint *
+g_type_signals (GType itype,
+ guint *n_ids)
+{
+ guint i;
+ SignalKey *keys;
+ guint n_nodes;
+ GArray *result;
+
+ g_return_val_if_fail (n_ids != NULL, NULL);
+ g_return_val_if_fail (G_TYPE_IS_INSTANTIATABLE (itype) || G_TYPE_IS_INTERFACE (itype), NULL);
+
+ keys = g_signal_key_bsa.nodes;
+ n_nodes = g_signal_key_bsa.n_nodes;
+ result = g_array_new (FALSE, FALSE, sizeof (guint));
+
+ for (i = 0; i < n_nodes; i++)
+ {
+ if (keys[i].itype == itype)
+ g_array_append_val (result, keys[i].signal_id);
+ }
+
+ *n_ids = result->len;
+
+ return (guint *) g_array_free (result, FALSE);
+}
+
guint
g_signal_newv (const gchar *signal_name,
GType itype,
void g_signal_query (guint signal_id,
GSignalQuery *query);
+guint * g_type_signals (GType itype,
+ guint *n_ids);
/* --- signal handlers --- */
guint g_signal_connect_closure (gpointer instance,