From e80aedca29dc511e5c41cf4f13a34018e6f08be7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20Sch=C3=B6nfeld?= Date: Sat, 25 Aug 2012 15:51:15 +0200 Subject: 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 --- docs/reference/gi-sections.txt | 1 + girepository/giinterfaceinfo.c | 33 +++++++++++++++++++++++++++++++++ girepository/giinterfaceinfo.h | 2 ++ 3 files changed, 36 insertions(+) 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 @@ -292,6 +292,39 @@ g_interface_info_get_signal (GIInterfaceInfo *info, rinfo->typelib, offset); } +/** + * 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); -- cgit v1.2.1