Functions
g_datalist_init ()
void
g_datalist_init (GData **datalist);
Resets the datalist to NULL. It does not free any memory or call
any destroy functions.
[skip]
g_datalist_id_set_data()
#define g_datalist_id_set_data(dl, q, d)
Sets the data corresponding to the given GQuark id. Any previous
data with the same key is removed, and its destroy function is
called.
g_datalist_id_set_data_full ()
void
g_datalist_id_set_data_full (GData **datalist,
GQuark key_id,
gpointer data,
GDestroyNotify destroy_func);
Sets the data corresponding to the given GQuark id, and the
function to be called when the element is removed from the datalist.
Any previous data with the same key is removed, and its destroy
function is called.
[skip]
g_datalist_id_get_data ()
gpointer
g_datalist_id_get_data (GData **datalist,
GQuark key_id);
Retrieves the data element corresponding to key_id
.
Returns
the data element, or NULL if
it is not found.
[transfer none][nullable]
g_datalist_id_remove_data()
#define g_datalist_id_remove_data(dl, q)
Removes an element, using its GQuark identifier.
g_datalist_id_remove_no_notify ()
gpointer
g_datalist_id_remove_no_notify (GData **datalist,
GQuark key_id);
Removes an element, without calling its destroy notification
function.
[skip]
Returns
the data previously stored at key_id
,
or NULL if none.
[nullable]
GDuplicateFunc ()
gpointer
(*GDuplicateFunc) (gpointer data,
gpointer user_data);
The type of functions that are used to 'duplicate' an object.
What this means depends on the context, it could just be
incrementing the reference count, if data
is a ref-counted
object.
Returns
a duplicate of data
g_datalist_id_dup_data ()
gpointer
g_datalist_id_dup_data (GData **datalist,
GQuark key_id,
GDuplicateFunc dup_func,
gpointer user_data);
This is a variant of g_datalist_id_get_data() which
returns a 'duplicate' of the value. dup_func
defines the
meaning of 'duplicate' in this context, it could e.g.
take a reference on a ref-counted object.
If the key_id
is not set in the datalist then dup_func
will be called with a NULL argument.
Note that dup_func
is called while the datalist is locked, so it
is not allowed to read or modify the datalist.
This function can be useful to avoid races when multiple
threads are using the same datalist and the same key.
[skip]
Returns
the result of calling dup_func
on the value
associated with key_id
in datalist
, or NULL if not set.
If dup_func
is NULL, the value is returned unmodified.
[nullable]
Since: 2.34
g_datalist_id_replace_data ()
gboolean
g_datalist_id_replace_data (GData **datalist,
GQuark key_id,
gpointer oldval,
gpointer newval,
GDestroyNotify destroy,
GDestroyNotify *old_destroy);
Compares the member that is associated with key_id
in
datalist
to oldval
, and if they are the same, replace
oldval
with newval
.
This is like a typical atomic compare-and-exchange
operation, for a member of datalist
.
If the previous value was replaced then ownership of the
old value (oldval
) is passed to the caller, including
the registered destroy notify for it (passed out in old_destroy
).
Its up to the caller to free this as he wishes, which may
or may not include using old_destroy
as sometimes replacement
should not destroy the object in the normal way.
[skip]
Returns
TRUE if the existing value for key_id
was replaced
by newval
, FALSE otherwise.
Since: 2.34
g_datalist_set_data()
#define g_datalist_set_data(dl, k, d)
Sets the data element corresponding to the given string identifier.
g_datalist_set_data_full()
#define g_datalist_set_data_full(dl, k, d, f)
Sets the data element corresponding to the given string identifier,
and the function to be called when the data element is removed.
g_datalist_get_data ()
gpointer
g_datalist_get_data (GData **datalist,
const gchar *key);
Gets a data element, using its string identifier. This is slower than
g_datalist_id_get_data() because it compares strings.
Returns
the data element, or NULL if it
is not found.
[transfer none][nullable]
g_datalist_remove_data()
#define g_datalist_remove_data(dl, k)
Removes an element using its string identifier. The data element's
destroy function is called if it has been set.
g_datalist_remove_no_notify()
#define g_datalist_remove_no_notify(dl, k)
Removes an element, without calling its destroy notifier.
g_datalist_foreach ()
void
g_datalist_foreach (GData **datalist,
GDataForeachFunc func,
gpointer user_data);
Calls the given function for each data element of the datalist. The
function is called with each data element's GQuark id and data,
together with the given user_data
parameter. Note that this
function is NOT thread-safe. So unless datalist
can be protected
from any modifications during invocation of this function, it should
not be called.
func
can make changes to datalist
, but the iteration will not
reflect changes made during the g_datalist_foreach() call, other
than skipping over elements that are removed.
g_datalist_clear ()
void
g_datalist_clear (GData **datalist);
Frees all the data elements of the datalist.
The data elements' destroy functions are called
if they have been set.
[skip]
g_datalist_set_flags ()
void
g_datalist_set_flags (GData **datalist,
guint flags);
Turns on flag values for a data list. This function is used
to keep a small number of boolean flags in an object with
a data list without using any additional space. It is
not generally useful except in circumstances where space
is very tight. (It is used in the base GObject type, for
example.)
Since: 2.8
g_datalist_get_flags ()
guint
g_datalist_get_flags (GData **datalist);
Gets flags values packed in together with the datalist.
See g_datalist_set_flags().
Returns
the flags of the datalist
Since: 2.8