Varargs Value Collection

Varargs Value Collection — Converting varargs to generic values

Functions

Types and Values

Includes

#include <glib-object.h>
#include <gobject/gvaluecollector.h>

Description

The macros in this section provide the varargs parsing support needed in variadic GObject functions such as g_object_new() or g_object_set().

They currently support the collection of integral types, floating point types and pointers.

Functions

G_VALUE_COLLECT_INIT()

#define             G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error)

Collects a variable argument value from a va_list.

We have to implement the varargs collection as a macro, because on some systems va_list variables cannot be passed by reference.

Parameters

value

a GValue return location. value must contain only 0 bytes.

 

_value_type

the GType to use for value .

 

var_args

the va_list variable; it may be evaluated multiple times

 

flags

flags which are passed on to the collect_value() function of the GTypeValueTable of value .

 

__error

a gchar** variable that will be modified to hold a g_new() allocated error messages if something fails

 

Since: 2.24


G_VALUE_COLLECT_INIT2()

#define             G_VALUE_COLLECT_INIT2(value, g_vci_vtab, _value_type, var_args, flags, __error)

A variant of G_VALUE_COLLECT_INIT() that provides the GTypeValueTable to the caller.

Parameters

value

a GValue return location. value must contain only 0 bytes.

 

g_vci_vtab

a GTypeValueTable pointer that will be set to the value table for _value_type

 

_value_type

the GType to use for value .

 

var_args

the va_list variable; it may be evaluated multiple times

 

flags

flags which are passed on to the collect_value() function of the GTypeValueTable of value .

 

__error

a gchar** variable that will be modified to hold a g_new() allocated error messages if something fails

 

Since: 2.74


G_VALUE_COLLECT()

#define             G_VALUE_COLLECT(value, var_args, flags, __error)

Collects a variable argument value from a va_list.

We have to implement the varargs collection as a macro, because on some systems va_list variables cannot be passed by reference.

Note: If you are creating the value argument just before calling this macro, you should use the G_VALUE_COLLECT_INIT() variant and pass the uninitialized GValue. That variant is faster than G_VALUE_COLLECT().

Parameters

value

a GValue return location. value is supposed to be initialized according to the value type to be collected

 

var_args

the va_list variable; it may be evaluated multiple times

 

flags

flags which are passed on to the collect_value() function of the GTypeValueTable of value .

 

__error

a gchar** variable that will be modified to hold a g_new() allocated error messages if something fails

 

G_VALUE_COLLECT_SKIP()

#define             G_VALUE_COLLECT_SKIP(_value_type, var_args)

Skip an argument of type _value_type from var_args .

Parameters

_value_type

the GType of the value to skip

 

var_args

the va_list variable; it may be evaluated multiple times

 

G_VALUE_LCOPY()

#define             G_VALUE_LCOPY(value, var_args, flags, __error)

Stores a value’s value into one or more argument locations from a va_list.

This is the inverse of G_VALUE_COLLECT().

Parameters

value

a GValue to store into the var_args ; this must be initialized and set

 

var_args

the va_list variable; it may be evaluated multiple times

 

flags

flags which are passed on to the lcopy_value() function of the GTypeValueTable of value .

 

__error

a gchar** variable that will be modified to hold a g_new() allocated error message if something fails

 

Types and Values

GTypeCValue

A union holding one collected value.

Members

gint v_int;

the field for holding integer values

 

glong v_long;

the field for holding long integer values

 

gint64 v_int64;

the field for holding 64 bit integer values

 

gdouble v_double;

the field for holding floating point values

 

gpointer v_pointer;

the field for holding pointers

 

G_VALUE_COLLECT_FORMAT_MAX_LENGTH

#define G_VALUE_COLLECT_FORMAT_MAX_LENGTH (8)

The maximal number of GTypeCValues which can be collected for a single GValue.