[gobject-introspection] girepository: Add g_interface_info_find_signal



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]