Function
GObjectTypeValueLCopyFunc
since: 2.78
Declaration
gchar*
(* GTypeValueLCopyFunc) (
const GValue* value,
guint n_collect_values,
GTypeCValue* collect_values,
guint collect_flags
)
Description
This function is responsible for storing the value
contents into arguments passed through a variadic argument list which
got collected into collect_values according to lcopy_format.
The n_collect_values argument equals the string length of
lcopy_format, and collect_flags may contain G_VALUE_NOCOPY_CONTENTS.
In contrast to GTypeValueCollectFunc, this function is obliged to always
properly support G_VALUE_NOCOPY_CONTENTS.
Similar to GTypeValueCollectFunc the function may prematurely abort by
returning a newly allocated string describing an error condition. To
complete the string example:
gchar **string_p = collect_values[0].v_pointer;
g_return_val_if_fail (string_p != NULL,
g_strdup ("string location passed as NULL"));
if (collect_flags & G_VALUE_NOCOPY_CONTENTS)
*string_p = value->data[0].v_pointer;
else
*string_p = g_strdup (value->data[0].v_pointer);
And an illustrative version of this function for reference-counted types:
GObject **object_p = collect_values[0].v_pointer;
g_return_val_if_fail (object_p != NULL,
g_strdup ("object location passed as NULL"));
if (value->data[0].v_pointer == NULL)
*object_p = NULL;
else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) // always honour
*object_p = value->data[0].v_pointer;
else
*object_p = g_object_ref (value->data[0].v_pointer);
return NULL;
Available since: 2.78
Parameters
value-
Type:
GValueThe value to lcopy.
The data is owned by the caller of the function. n_collect_values-
Type:
guintThe number of collected values.
collect_values-
Type: An array of
GTypeCValueThe collected locations for storage.
The length of the array is specified in the n_collect_valuesargument.The data is owned by the caller of the function. collect_flags-
Type:
guintOptional flags.