static VALUE rg_get_signal(VALUE self, VALUE rb_n_or_name) { GIInterfaceInfo *info; GISignalInfo *signal_info; info = SELF(self); if (RB_TYPE_P(rb_n_or_name, T_FIXNUM)) { gint n; n = NUM2INT(rb_n_or_name); signal_info = g_interface_info_get_signal(info, n); } else { #ifdef HAVE_G_INTERFACE_INFO_FIND_SIGNAL const char *name; name = RVAL2CSTR(rb_n_or_name); signal_info = g_interface_info_find_signal(info, name); #else rb_raise(rb_eArgError, "g_interface_info_find_signal() is defined " "since GObjectIntrospection 1.34"); #endif } return GI_BASE_INFO2RVAL_WITH_UNREF(signal_info); }
/** * g_interface_info_find_signal: * @info: a #GIInterfaceInfo * @name: Name of signal * * TODO * * 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; }