Top |
#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 () |
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()
.
#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.
Since: 2.34
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.
This function must not be used before library constructors have finished running. In particular, this means it cannot be used to initialize global variables in C++.
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).
This function must not be used before library constructors have finished running. In particular, this means it cannot be used to initialize global variables in C++.
const gchar *
g_quark_to_string (GQuark quark
);
Gets the string associated with the given GQuark.
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()
.
This function must not be used before library constructors have finished running.
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()
.
This function must not be used before library constructors have finished running. In particular, this means it cannot be used to initialize global variables in C++.
Since: 2.10
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.
This function must not be used before library constructors have finished running. In particular, this means it cannot be used to initialize global variables in C++.
Since: 2.10
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
.