## Quarks

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

## Functions

#define | G_DEFINE_QUARK()
GQuark | g_quark_from_string ()
GQuark | g_quark_from_static_string ()
const gchar * | g_quark_to_string ()
GQuark | g_quark_try_string ()
const gchar * | g_intern_string ()
const gchar * | g_intern_static_string ()

## Types and Values

typedef | GQuark

## Includes

    #include <gmodule.h>

## 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()`.

Another use for the string pool maintained for the quark functions is string interning, using `g_intern_string()` or `g_intern_static_string()`. An interned string is a canonical representation for a string. One important advantage of interned strings is that they can be compared for equality by a simple pointer comparison, rather than using `strcmp()`.

## Functions

### G_DEFINE_QUARK()

    #define             G_DEFINE_QUARK(QN, q_n)

A convenience macro which defines a function returning the GQuark for the name `QN` . The function will be named ``q_n_quark()`` .

Note that the quark name will be stringified automatically in the macro, so you shouldn't use double quotes.

#### Parameters

QN | the name to return a GQuark for |
q_n | prefix for the function name |

Since: 2.34

### 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.

#### Parameters

string | a string. | [nullable]

#### Returns

the GQuark identifying the string, or 0 if `string` is `NULL`

### 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 continue to exist until the program terminates. 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).

#### Parameters

string | a string. | [nullable]

#### Returns

the GQuark identifying the string, or 0 if `string` is `NULL`

### g_quark_to_string ()

    const gchar *
    g_quark_to_string (GQuark quark);

Gets the string associated with the given GQuark.

#### Parameters

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 string is `NULL` or it 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()`.

#### Parameters

string | a string. | [nullable]

#### Returns

the GQuark associated with the string, or 0 if `string` is `NULL` or there is no GQuark associated with it

### g_intern_string ()

    const gchar *
    g_intern_string (const gchar *string);

Returns a canonical representation for `string` . Interned strings can be compared for equality by comparing the pointers, instead of using `strcmp()`.

#### Parameters

string | a string. | [nullable]

#### Returns

a canonical representation for the string

Since: 2.10

### g_intern_static_string ()

    const gchar *
    g_intern_static_string (const gchar *string);

Returns a canonical representation for `string` . Interned strings can be compared for equality by comparing the pointers, instead of using `strcmp()`. `g_intern_static_string()` does not copy the string, therefore `string` must not be freed or modified.

#### Parameters

string | a static string. | [nullable]

#### Returns

a canonical representation for the string

Since: 2.10

## Types and Values

### GQuark

    typedef guint32 GQuark;

A GQuark is a non-zero integer which uniquely identifies a particular string. A GQuark value of zero is associated to `NULL`.