diff options
author | Torsten Schönfeld <kaffeetisch@gmx.de> | 2012-08-25 15:51:15 +0200 |
---|---|---|
committer | Torsten Schönfeld <kaffeetisch@gmx.de> | 2012-08-25 19:06:58 +0200 |
commit | e80aedca29dc511e5c41cf4f13a34018e6f08be7 (patch) | |
tree | 8757624b3356335c58175c52320d5ff30880bc7c | |
parent | b0b4c98b31a23e6885b6c0785df93404b161b4b7 (diff) | |
download | gobject-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.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); |