/* Note that g_signal_emit_by_name() resets the return value to the default if no handlers are connected, in contrast to g_signal_emitv().  */
void g_signal_emit_by_name(gpointer instance, const gchar *detailed_signal,...)
/* Note that g_signal_emit_by_name() resets the return value to the default if no handlers are connected, in contrast to g_signal_emitv().  */
void g_signal_emit_by_name(gpointer instance, const gchar *detailed_signal,...)
{
  GQuark detail = 0;
  guint signal_id;
  GType itype;
  g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
  g_return_if_fail (detailed_signal != NULL);
  itype = G_TYPE_FROM_INSTANCE (instance);
  SIGNAL_LOCK ();
  signal_id = signal_parse_name (detailed_signal, itype, &detail, TRUE);
  SIGNAL_UNLOCK ();
  if (signal_id)
    {
      va_list var_args;
      va_start (var_args, detailed_signal);
      g_signal_emit_valist (instance, signal_id, detail, var_args);
      va_end (var_args);
    }
  else
    g_warning ("%s: signal name '%s' is invalid for instance '%p' of type '%s'",
               G_STRLOC, detailed_signal, instance, g_type_name (itype));
}