## Quarks

Quarks — a 2-way association between a string and a unique integer identifier.

## Synopsis

    #include <glib.h>

    typedef     GQuark;
    GQuark      g_quark_from_string             (const gchar *string);
    GQuark      g_quark_from_static_string      (const gchar *string);
    G_CONST_RETURN gchar* g_quark_to_string     (GQuark quark);
    GQuark      g_quark_try_string              (const gchar *string);

## Description

Quarks are associations between strings and integer identifiers. Given either the string or the GQuark identifier it is possible to retrieve the other.

Quarks are used for both Datasets and Keyed Data Lists.

To create a new quark from a string, use `g_quark_from_string()` or `g_quark_from_static_string()`.

To find the string corresponding to a given GQuark, use `g_quark_to_string()`.

To find the GQuark corresponding to a given string, use `g_quark_try_string()`.

## Details

### GQuark

    typedef guint32 GQuark;

A GQuark is an integer which uniquely identifies a particular string.

### g_quark_from_string ()

    GQuark      g_quark_from_string             (const gchar *string);

Gets the GQuark identifying the given string. If the string does not currently have an associated GQuark, a new GQuark is created, using a copy of the string.

`string` : | a string.
Returns : | the GQuark identifying the string.

### g_quark_from_static_string ()

    GQuark      g_quark_from_static_string      (const gchar *string);

Gets the GQuark identifying the given (static) string. If the string does not currently have an associated GQuark, a new GQuark is created, linked to the given string.

Note that this function is identical to `g_quark_from_string()` except that if a new GQuark is created the string itself is used rather than a copy. This saves memory, but can only be used if the string will always exist. It can be used with statically allocated strings in the main program, but not with statically allocated memory in dynamically loaded modules, if you expect to ever unload the module again (e.g. do not use this function in GTK+ theme engines).

`string` : | a string.
Returns : | the GQuark identifying the string.

### g_quark_to_string ()

    G_CONST_RETURN gchar* g_quark_to_string     (GQuark quark);

Gets the string associated with the given GQuark.

`quark` : | a GQuark.
Returns : | the string associated with the GQuark.

### g_quark_try_string ()

    GQuark      g_quark_try_string              (const gchar *string);

Gets the GQuark associated with the given string, or 0 if the string has no associated GQuark.

If you want the GQuark to be created if it doesn't already exist, use `g_quark_from_string()` or `g_quark_from_static_string()`.

`string` : | a string.
Returns : | the GQuark associated with the string, or 0 if there is no GQuark associated with the string.