Function

GLibdatalist_id_dup_data

since: 2.34

Declaration

gpointer
g_datalist_id_dup_data (
  GData** datalist,
  GQuark key_id,
  GDuplicateFunc dup_func,
  gpointer user_data
)

Description

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.

Available since: 2.34

This function is not directly available to language bindings.

Parameters

datalist

Type: GData

Location of a datalist.

The data is owned by the caller of the function.
key_id

Type: GQuark

The GQuark identifying a data element.

dup_func

Type: GDuplicateFunc

Function to duplicate the old value.

The argument can be NULL.
user_data

Type: gpointer

Passed as user_data to dup_func.

The argument can be NULL.
The data is owned by the caller of the function.

Return value

Type: gpointer

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.

The data is owned by the called function.
The return value can be NULL.