Re: clarification: GErrors and GQuarks



On Thu, May 10, 2012 at 04:45:09PM -0800, Christopher Howard wrote:
Quick glib question here: I've been getting into glib's error reporting
system and trying to integrate it into some code. (My code is using
glib, but not GTK+ itself.) Overall it seems rather straightforward, but
there was one point I was hoping for clarification on:

In the g_set_error() parameters, the "domain" parameter is a GQuark.
Does this mean that I am supposed to use something like
"g_quark_from_string (MODULE_ERROR_DOMAIN_NAME)" for that parameter each
time I call g_set_error?

That would make sense, from what I've read in the GQuark part of the
API. But I'm a little confused because the example given in the API for
g_set_error() usage does not do this. (In the example, they just pass in
some mysterious constant of unexplained origin.)

The mysterious constants follow the common usage pattern.  For Bar in
package Foo, header:

#define FOO_BAR_ERROR foo_bar_error_quark()

GQuark foo_bar_error_quark(void) G_GNUC_CONST;

typedef enum {
    FOO_BAR_ERROR_BAD_WHATEVER...
} FooBarError;

and code:

GQuark
foo_bar_error_quark(void)
{
    return g_quark_from_static_string("foo-bar-error-quark");
}

You then do

    g_set_error(error, FOO_BAR_ERROR, FOO_BAR_ERROR_BAD_WHATEVER, ...);

Yeti




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]