Value


Object Hierarchy:

GLib.Value GLib.Value GLib.Value

Description:

[ CCode ( copy_function = "g_value_copy" , destroy_function = "g_value_unset" , get_value_function = "g_value_get_boxed" , marshaller_type_name = "BOXED" , set_value_function = "g_value_set_boxed" , take_value_function = "g_value_take_boxed" , type_id = "G_TYPE_VALUE" , type_signature = "v" ) ]
public struct Value

An opaque structure used to hold different types of values.

Before it can be used, a `GValue` has to be initialized to a specific type by calling [method@GObject.Value.init] on it.

Many types which are stored within a `GValue` need to allocate data on the heap, so [method@GObject.Value.unset] must always be called on a `GValue` to free any such data once you’re finished with the `GValue`, even if the `GValue` itself is stored on the stack.

The data within the structure has protected scope: it is accessible only to functions within a [struct@GObject.TypeValueTable] structure, or implementations of the `g_value_*()` API. That is, code which implements 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 [func@GObject.VALUE_TYPE] macro and related macros.

Example: GLib.Value and strings:

public static int main (string[] args) {
Value value1 = Value (typeof (string));
value1.set_string ("My string");

// Output: ``My string``
print ("%s\n", value1.get_string ());

// Output: ``My string``
print ("%s\n", value1.dup_string ());

// Output: ``My string``
print ("%s\n", (string) value1);

// Output: ``My string 2``
value1 = "My string 2";
print ("%s\n", (string) value1);

return 0;
}

valac --pkg gobject-2.0 GLib.Value.vala


Namespace: GLib
Package: gobject-2.0

Content:

Static methods:

Creation methods:

Methods: