### Struct

# GObject Value

#### Description

    struct GValue {
      None data;
    }

An opaque structure used to hold different types of values.

The data within the structure has protected scope: it is accessible only to functions within a `GTypeValueTable` structure, or implementations of the g_value_*() API. That is, code portions which implement new fundamental types.

`GValue` users cannot make any assumptions about how data is stored within the 2 element `data` union, and the `g_type` member should only be accessed through the G_VALUE_TYPE() macro.

###### Structure members

`data`

  No description available.

#### Functions

###### g_value_register_transform_func

Registers a value transformation function for use in g_value_transform(). A previously registered transformation function for `src_type` and `dest_type` will be replaced.

###### g_value_type_compatible

Returns whether a `GValue` of type `src_type` can be copied into a `GValue` of type `dest_type`.

###### g_value_type_transformable

Check whether `g_value_transform()` is able to transform values of type `src_type` into values of type `dest_type`. Note that for the types to be transformable, they must be compatible or a transformation function must be registered.

#### Instance methods

###### g_value_copy

Copies the value of `src_value` into `dest_value`.

###### g_value_dup_boxed

Get the contents of a `G_TYPE_BOXED` derived `GValue`. Upon getting, the boxed value is duplicated and needs to be later freed with g_boxed_free(), e.g. like: g_boxed_free (G_VALUE_TYPE (`value`), return_value);.

###### g_value_dup_object

Get the contents of a `G_TYPE_OBJECT` derived `GValue`, increasing its reference count. If the contents of the `GValue` are `NULL`, then `NULL` will be returned.

###### g_value_dup_param

Get the contents of a `G_TYPE_PARAM` `GValue`, increasing its reference count.

###### g_value_dup_string

Get a copy the contents of a `G_TYPE_STRING` `GValue`.

###### g_value_dup_variant

Get the contents of a variant `GValue`, increasing its refcount. The returned `GVariant` is never floating.

since: 2.26

###### g_value_fits_pointer

Determines if `value` will fit inside the size of a pointer value. This is an internal function introduced mainly for C marshallers.

###### g_value_get_boolean

Get the contents of a `G_TYPE_BOOLEAN` `GValue`.

###### g_value_get_boxed

Get the contents of a `G_TYPE_BOXED` derived `GValue`.

###### g_value_get_char

Do not use this function; it is broken on platforms where the %char type is unsigned, such as ARM and PowerPC. See g_value_get_schar().

deprecated: 2.32

###### g_value_get_double

Get the contents of a `G_TYPE_DOUBLE` `GValue`.

###### g_value_get_enum

Get the contents of a `G_TYPE_ENUM` `GValue`.

###### g_value_get_flags

Get the contents of a `G_TYPE_FLAGS` `GValue`.

###### g_value_get_float

Get the contents of a `G_TYPE_FLOAT` `GValue`.

###### g_value_get_gtype

Get the contents of a `G_TYPE_GTYPE` `GValue`.

since: 2.12

###### g_value_get_int

Get the contents of a `G_TYPE_INT` `GValue`.

###### g_value_get_int64

Get the contents of a `G_TYPE_INT64` `GValue`.

###### g_value_get_long

Get the contents of a `G_TYPE_LONG` `GValue`.

###### g_value_get_object

Get the contents of a `G_TYPE_OBJECT` derived `GValue`.

###### g_value_get_param

Get the contents of a `G_TYPE_PARAM` `GValue`.

###### g_value_get_pointer

Get the contents of a pointer `GValue`.

###### g_value_get_schar

Get the contents of a `G_TYPE_CHAR` `GValue`.

since: 2.32

###### g_value_get_string

Get the contents of a `G_TYPE_STRING` `GValue`.

###### g_value_get_uchar

Get the contents of a `G_TYPE_UCHAR` `GValue`.

###### g_value_get_uint

Get the contents of a `G_TYPE_UINT` `GValue`.

###### g_value_get_uint64

Get the contents of a `G_TYPE_UINT64` `GValue`.

###### g_value_get_ulong

Get the contents of a `G_TYPE_ULONG` `GValue`.

###### g_value_get_variant

Get the contents of a variant `GValue`.

since: 2.26

###### g_value_init

Initializes `value` with the default value of `type`.

###### g_value_init_from_instance

Initializes and sets `value` from an instantiatable type via the value_table’s `collect_value()` function.

since: 2.42

###### g_value_peek_pointer

Returns the value contents as pointer. This function asserts that `g_value_fits_pointer()` returned `TRUE` for the passed in value. This is an internal function introduced mainly for C marshallers.

###### g_value_reset

Clears the current value in `value` and resets it to the default value (as if the value had just been initialized).

###### g_value_set_boolean

Set the contents of a `G_TYPE_BOOLEAN` `GValue` to `v_boolean`.

###### g_value_set_boxed

Set the contents of a `G_TYPE_BOXED` derived `GValue` to `v_boxed`.

###### g_value_set_boxed_take_ownership

This is an internal function introduced mainly for C marshallers.

deprecated: 2.4

###### g_value_set_char

Set the contents of a `G_TYPE_CHAR` `GValue` to `v_char`.

deprecated: 2.32

###### g_value_set_double

Set the contents of a `G_TYPE_DOUBLE` `GValue` to `v_double`.

###### g_value_set_enum

Set the contents of a `G_TYPE_ENUM` `GValue` to `v_enum`.

###### g_value_set_flags

Set the contents of a `G_TYPE_FLAGS` `GValue` to `v_flags`.

###### g_value_set_float

Set the contents of a `G_TYPE_FLOAT` `GValue` to `v_float`.

###### g_value_set_gtype

Set the contents of a `G_TYPE_GTYPE` `GValue` to `v_gtype`.

since: 2.12

###### g_value_set_instance

Sets `value` from an instantiatable type via the value_table’s `collect_value()` function.

###### g_value_set_int

Set the contents of a `G_TYPE_INT` `GValue` to `v_int`.

###### g_value_set_int64

Set the contents of a `G_TYPE_INT64` `GValue` to `v_int64`.

###### g_value_set_interned_string

Set the contents of a `G_TYPE_STRING` `GValue` to `v_string`. The string is assumed to be static and interned (canonical, for example from g_intern_string()), and is thus not duplicated when setting the `GValue`.

since: 2.66

###### g_value_set_long

Set the contents of a `G_TYPE_LONG` `GValue` to `v_long`.

###### g_value_set_object

Set the contents of a `G_TYPE_OBJECT` derived `GValue` to `v_object`.

###### g_value_set_object_take_ownership

This is an internal function introduced mainly for C marshallers.

deprecated: 2.4

###### g_value_set_param

Set the contents of a `G_TYPE_PARAM` `GValue` to `param`.

###### g_value_set_param_take_ownership

This is an internal function introduced mainly for C marshallers.

deprecated: 2.4

###### g_value_set_pointer

Set the contents of a pointer `GValue` to `v_pointer`.

###### g_value_set_schar

Set the contents of a `G_TYPE_CHAR` `GValue` to `v_char`.

since: 2.32

###### g_value_set_static_boxed

Set the contents of a `G_TYPE_BOXED` derived `GValue` to `v_boxed`.

###### g_value_set_static_string

Set the contents of a `G_TYPE_STRING` `GValue` to `v_string`. The string is assumed to be static, and is thus not duplicated when setting the `GValue`.

###### g_value_set_string

Set the contents of a `G_TYPE_STRING` `GValue` to a copy of `v_string`.

###### g_value_set_string_take_ownership

This is an internal function introduced mainly for C marshallers.

deprecated: 2.4

###### g_value_set_uchar

Set the contents of a `G_TYPE_UCHAR` `GValue` to `v_uchar`.

###### g_value_set_uint

Set the contents of a `G_TYPE_UINT` `GValue` to `v_uint`.

###### g_value_set_uint64

Set the contents of a `G_TYPE_UINT64` `GValue` to `v_uint64`.

###### g_value_set_ulong

Set the contents of a `G_TYPE_ULONG` `GValue` to `v_ulong`.

###### g_value_set_variant

Set the contents of a variant `GValue` to `variant`. If the variant is floating, it is consumed.

since: 2.26

###### g_value_steal_string

Steal ownership on contents of a `G_TYPE_STRING` `GValue`. As a result of this operation the value’s contents will be reset to `NULL`.

since: 2.80

###### g_value_take_boxed

Sets the contents of a `G_TYPE_BOXED` derived `GValue` to `v_boxed` and takes over the ownership of the caller’s reference to `v_boxed`; the caller doesn’t have to unref it any more.

since: 2.4

###### g_value_take_object

Sets the contents of a `G_TYPE_OBJECT` derived `GValue` to `v_object` and takes over the ownership of the caller’s reference to `v_object`; the caller doesn’t have to unref it any more (i.e. the reference count of the object is not increased).

since: 2.4

###### g_value_take_param

Sets the contents of a `G_TYPE_PARAM` `GValue` to `param` and takes over the ownership of the caller’s reference to `param`; the caller doesn’t have to unref it any more.

since: 2.4

###### g_value_take_string

Sets the contents of a `G_TYPE_STRING` `GValue` to `v_string`.

since: 2.4

###### g_value_take_variant

Set the contents of a variant `GValue` to `variant`, and takes over the ownership of the caller’s reference to `variant`; the caller doesn’t have to unref it any more (i.e. the reference count of the variant is not increased).

since: 2.26

###### g_value_transform

Tries to cast the contents of `src_value` into a type appropriate to store in `dest_value`, e.g. to transform a `G_TYPE_INT` value into a `G_TYPE_FLOAT` value. Performing transformations between value types might incur precision lossage. Especially transformations into strings might reveal seemingly arbitrary results and shouldn’t be relied upon for production code (such as rcfile value or object property serialization).

###### g_value_unset

Clears the current value in `value` (if any) and “unsets” the type, this releases all resources associated with this GValue. An unset value is the same as an uninitialized (zero-filled) `GValue` structure.