summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Schönfeld <kaffeetisch@gmx.de>2012-08-25 15:51:15 +0200
committerTorsten Schönfeld <kaffeetisch@gmx.de>2012-08-25 19:06:58 +0200
commite80aedca29dc511e5c41cf4f13a34018e6f08be7 (patch)
tree8757624b3356335c58175c52320d5ff30880bc7c
parentb0b4c98b31a23e6885b6c0785df93404b161b4b7 (diff)
downloadgobject-introspection-e80aedca29dc511e5c41cf4f13a34018e6f08be7.tar.gz
girepository: Add g_interface_info_find_signal
Add the convenience method g_interface_info_find_signal, mirroring g_object_info_find_signal. https://bugzilla.gnome.org/show_bug.cgi?id=682672
-rw-r--r--docs/reference/gi-sections.txt1
-rw-r--r--girepository/giinterfaceinfo.c33
-rw-r--r--girepository/giinterfaceinfo.h2
3 files changed, 36 insertions, 0 deletions
diff --git a/docs/reference/gi-sections.txt b/docs/reference/gi-sections.txt
index 7db8378d..b7565a13 100644
--- a/docs/reference/gi-sections.txt
+++ b/docs/reference/gi-sections.txt
@@ -135,6 +135,7 @@ g_interface_info_get_method
g_interface_info_find_method
g_interface_info_get_n_signals
g_interface_info_get_signal
+g_interface_info_find_signal
g_interface_info_get_n_vfuncs
g_interface_info_get_vfunc
g_interface_info_get_n_constants
diff --git a/girepository/giinterfaceinfo.c b/girepository/giinterfaceinfo.c
index 69cd63d9..f998da44 100644
--- a/girepository/giinterfaceinfo.c
+++ b/girepository/giinterfaceinfo.c
@@ -293,6 +293,39 @@ g_interface_info_get_signal (GIInterfaceInfo *info,
}
/**
+ * g_interface_info_find_signal:
+ * @info: a #GIInterfaceInfo
+ * @name: Name of signal
+ *
+ * Returns: (transfer full): Info for the signal with name @name in @info, or
+ * %NULL on failure.
+ *
+ * Since: 1.34
+ */
+GISignalInfo *
+g_interface_info_find_signal (GIInterfaceInfo *info,
+ const gchar *name)
+{
+ gint n_signals;
+ gint i;
+
+ n_signals = g_interface_info_get_n_signals (info);
+ for (i = 0; i < n_signals; i++)
+ {
+ GISignalInfo *siginfo = g_interface_info_get_signal (info, i);
+
+ if (g_strcmp0 (g_base_info_get_name (siginfo), name) != 0)
+ {
+ g_base_info_unref ((GIBaseInfo*)siginfo);
+ continue;
+ }
+
+ return siginfo;
+ }
+ return NULL;
+}
+
+/**
* g_interface_info_get_n_vfuncs:
* @info: a #GIInterfaceInfo
*
diff --git a/girepository/giinterfaceinfo.h b/girepository/giinterfaceinfo.h
index 8cab9961..ce40cda7 100644
--- a/girepository/giinterfaceinfo.h
+++ b/girepository/giinterfaceinfo.h
@@ -48,6 +48,8 @@ GIFunctionInfo * g_interface_info_find_method (GIInterfaceInfo *info,
gint g_interface_info_get_n_signals (GIInterfaceInfo *info);
GISignalInfo * g_interface_info_get_signal (GIInterfaceInfo *info,
gint n);
+GISignalInfo * g_interface_info_find_signal (GIInterfaceInfo *info,
+ const gchar *name);
gint g_interface_info_get_n_vfuncs (GIInterfaceInfo *info);
GIVFuncInfo * g_interface_info_get_vfunc (GIInterfaceInfo *info,
gint n);