[gobject-introspection] girepository: Add g_interface_info_find_signal
- From: Torsten SchÃnfeld <tsch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gobject-introspection] girepository: Add g_interface_info_find_signal
- Date: Sat, 25 Aug 2012 17:08:04 +0000 (UTC)
commit e80aedca29dc511e5c41cf4f13a34018e6f08be7
Author: Torsten SchÃnfeld <kaffeetisch gmx de>
Date: Sat Aug 25 15:51:15 2012 +0200
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(+), 0 deletions(-)
---
diff --git a/docs/reference/gi-sections.txt b/docs/reference/gi-sections.txt
index 7db8378..b7565a1 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 69cd63d..f998da4 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 8cab996..ce40cda 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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]