Object Hierarchy:

GLib.ValueArray GLib.ValueArray GLib.ValueArray


[ CCode ( copy_function = "g_value_array_copy" , free_function = "g_value_array_free" , type_id = "G_TYPE_VALUE_ARRAY" ) ]
[ Compact ]
[ Version ( deprecated = true , deprecated_since = "2.32" ) ]
public class ValueArray

Warning: ValueArray is deprecated since 2.32.

A `GValueArray` is a container structure to hold an array of generic values.


Use `GArray` instead, if possible for the given use case, as described above.

The prime purpose of a `GValueArray` is for it to be used as an object property that holds an array of values. A `GValueArray` wraps an array of `GValue` elements in order for it to be used as a boxed type through `G_TYPE_VALUE_ARRAY`.

`GValueArray` is deprecated in favour of `GArray` since GLib 2.32. It is possible to create a `GArray` that behaves like a `GValueArray` by using the size of `GValue` as the element size, and by setting [method@GObject.Value.unset] as the clear function using [ func@GLib.Array.set_clear_func], for instance, the following code:

```c GValueArray *array = g_value_array_new (10); ```

can be replaced by:

```c GArray *array = g_array_sized_new (FALSE, TRUE, sizeof (GValue), 10); g_array_set_clear_func (array, (GDestroyNotify) g_value_unset); ```

Example: Value arrays:

private inline Value create_string_value (string str) {
Value val = Value (typeof (string));
val.set_string (str);
return val;

public static int main (string[] args) {
ValueArray array = new ValueArray (10);

array.append (create_string_value ("BB"));
array.append (create_string_value ("DD"));
array.prepend (create_string_value ("AA"));

// Output: ``Len: 3``
print ("Len: %u\n", array.n_values);

array.insert (2, create_string_value ("CC"));
array.remove (3);

// Output:
// ``AA``
// ``BB``
// ``CC``
foreach (Value val in array.values) {
print ("%s\n", val.get_string ());

return 0;

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

Namespace: GLib
Package: gobject-2.0


Creation methods: