/** * g_dbus_error_register_error_domain: * @error_domain_quark_name: The error domain name. * @quark_volatile: A pointer where to store the #GQuark. * @entries: A pointer to @num_entries #GDBusErrorEntry struct items. * @num_entries: Number of items to register. * * Helper function for associating a #GError error domain with D-Bus error names. * * Since: 2.26 */ void g_dbus_error_register_error_domain (const gchar *error_domain_quark_name, volatile gsize *quark_volatile, const GDBusErrorEntry *entries, guint num_entries) { g_return_if_fail (error_domain_quark_name != NULL); g_return_if_fail (quark_volatile != NULL); g_return_if_fail (entries != NULL); g_return_if_fail (num_entries > 0); if (g_once_init_enter (quark_volatile)) { guint n; GQuark quark; quark = g_quark_from_static_string (error_domain_quark_name); for (n = 0; n < num_entries; n++) { g_warn_if_fail (g_dbus_error_register_error (quark, entries[n].error_code, entries[n].dbus_error_name)); } g_once_init_leave (quark_volatile, quark); } }
static void prv_connector_init_error_domain(GQuark error_quark) { guint index = sizeof(g_error_entries) / sizeof(const GDBusErrorEntry); while (index) { index--; g_dbus_error_register_error( error_quark, g_error_entries[index].error_code, g_error_entries[index].dbus_error_name); } }
/** * cd_sensor_error_quark: **/ GQuark cd_sensor_error_quark (void) { guint i; static GQuark quark = 0; if (!quark) { quark = g_quark_from_static_string ("CdSensor"); for (i = 0; i < CD_SENSOR_ERROR_LAST; i++) { g_dbus_error_register_error (quark, i, cd_sensor_error_to_string (i)); } } return quark; }
GQuark mux_guile_error_quark (void) { static GQuark quark = 0; if (G_LIKELY(quark != 0)) return quark; quark = g_quark_from_static_string ("mux-guile-error"); g_dbus_error_register_error ( quark, MUX_GUILE_ERROR, "mux.guile.Error"); return quark; }
/** * cd_client_error_quark: **/ GQuark cd_client_error_quark (void) { guint i; static GQuark quark = 0; if (!quark) { quark = g_quark_from_static_string ("colord"); for (i = 0; i < CD_CLIENT_ERROR_LAST; i++) { g_dbus_error_register_error (quark, i, cd_client_error_to_string (i)); } } return quark; }
static void register_error_domain (GQuark domain, const char *interface, GType enum_type) { GEnumClass *enum_class; GEnumValue *e; char *error_name; int i; enum_class = g_type_class_ref (enum_type); for (i = 0; i < enum_class->n_values; i++) { e = &enum_class->values[i]; g_assert (strchr (e->value_nick, '-') == NULL); error_name = g_strdup_printf ("%s.%s", interface, e->value_nick); g_dbus_error_register_error (domain, e->value, error_name); g_free (error_name); } g_type_class_unref (enum_class); }