diff options
-rw-r--r-- | docs/reference/gi-sections.txt | 1 | ||||
-rw-r--r-- | girepository/giinterfaceinfo.c | 33 | ||||
-rw-r--r-- | girepository/giinterfaceinfo.h | 2 |
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); |