Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
gvaluecollector.h File Reference
#include <glib-object.h>

Go to the source code of this file.

Data Structures

union  _GTypeCValue
 

Macros

#define G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error)
 
#define G_VALUE_COLLECT_INIT2(value, g_vci_vtab, _value_type, var_args, flags, __error)
 
#define G_VALUE_COLLECT(value, var_args, flags, __error)
 
#define G_VALUE_COLLECT_SKIP(_value_type, var_args)
 
#define G_VALUE_LCOPY(value, var_args, flags, __error)
 
#define G_VALUE_COLLECT_FORMAT_MAX_LENGTH   (8)
 

Enumerations

enum  {
  G_VALUE_COLLECT_INT = 'i' , G_VALUE_COLLECT_LONG = 'l' , G_VALUE_COLLECT_INT64 = 'q' , G_VALUE_COLLECT_DOUBLE = 'd' ,
  G_VALUE_COLLECT_POINTER = 'p'
}
 

Macro Definition Documentation

◆ G_VALUE_COLLECT

#define G_VALUE_COLLECT ( value,
var_args,
flags,
__error )
Value:
GValue *g_vc_value = (value); \
GType g_vc_value_type = G_VALUE_TYPE (g_vc_value); \
GTypeValueTable *g_vc_vtable = g_type_value_table_peek (g_vc_value_type); \
\
if (g_vc_vtable->value_free) \
g_vc_vtable->value_free (g_vc_value); \
memset (g_vc_value->data, 0, sizeof (g_vc_value->data)); \
\
G_VALUE_COLLECT_INIT(value, g_vc_value_type, var_args, flags, __error); \
#define G_STMT_END
Definition gmacros.h:997
#define G_STMT_START
Definition gmacros.h:989
gsize GType
Definition gtype.h:427
GOBJECT_AVAILABLE_IN_ALL GTypeValueTable * g_type_value_table_peek(GType type)
#define G_VALUE_TYPE(value)
Definition gvalue.h:62
int value
Definition lsqlite3.c:2155
GTypeValueFreeFunc value_free
Definition gtype.h:1442
union _GValue::@147 data[2]

G_VALUE_COLLECT: @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

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().

Definition at line 165 of file gvaluecollector.h.

165#define G_VALUE_COLLECT(value, var_args, flags, __error) G_STMT_START { \
166 GValue *g_vc_value = (value); \
167 GType g_vc_value_type = G_VALUE_TYPE (g_vc_value); \
168 GTypeValueTable *g_vc_vtable = g_type_value_table_peek (g_vc_value_type); \
169 \
170 if (g_vc_vtable->value_free) \
171 g_vc_vtable->value_free (g_vc_value); \
172 memset (g_vc_value->data, 0, sizeof (g_vc_value->data)); \
173 \
174 G_VALUE_COLLECT_INIT(value, g_vc_value_type, var_args, flags, __error); \
175} G_STMT_END

◆ G_VALUE_COLLECT_FORMAT_MAX_LENGTH

#define G_VALUE_COLLECT_FORMAT_MAX_LENGTH   (8)

G_VALUE_COLLECT_FORMAT_MAX_LENGTH:

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

Definition at line 276 of file gvaluecollector.h.

◆ G_VALUE_COLLECT_INIT

#define G_VALUE_COLLECT_INIT ( value,
_value_type,
var_args,
flags,
__error )
Value:
GTypeValueTable *g_vci_vtab; \
G_VALUE_COLLECT_INIT2(value, g_vci_vtab, _value_type, var_args, flags, __error); \

G_VALUE_COLLECT_INIT: @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

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.

Since: 2.24

Definition at line 82 of file gvaluecollector.h.

82#define G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error) \
83 G_STMT_START { \
84 GTypeValueTable *g_vci_vtab; \
85 G_VALUE_COLLECT_INIT2(value, g_vci_vtab, _value_type, var_args, flags, __error); \
86} G_STMT_END

◆ G_VALUE_COLLECT_INIT2

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

G_VALUE_COLLECT_INIT2: @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

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

Since: 2.74

Definition at line 105 of file gvaluecollector.h.

105#define G_VALUE_COLLECT_INIT2(value, g_vci_vtab, _value_type, var_args, flags, __error) \
106G_STMT_START { \
107 GValue *g_vci_val = (value); \
108 guint g_vci_flags = (flags); \
109 const gchar *g_vci_collect_format; \
110 GTypeCValue g_vci_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, }; \
111 guint g_vci_n_values = 0; \
112 g_vci_vtab = g_type_value_table_peek (_value_type); \
113 g_vci_collect_format = g_vci_vtab->collect_format; \
114 g_vci_val->g_type = _value_type; /* value_meminit() from gvalue.c */ \
115 while (*g_vci_collect_format) \
116 { \
117 GTypeCValue *g_vci_cvalue = g_vci_cvalues + g_vci_n_values++; \
118 \
119 switch (*g_vci_collect_format++) \
120 { \
121 case G_VALUE_COLLECT_INT: \
122 g_vci_cvalue->v_int = va_arg ((var_args), gint); \
123 break; \
124 case G_VALUE_COLLECT_LONG: \
125 g_vci_cvalue->v_long = va_arg ((var_args), glong); \
126 break; \
127 case G_VALUE_COLLECT_INT64: \
128 g_vci_cvalue->v_int64 = va_arg ((var_args), gint64); \
129 break; \
130 case G_VALUE_COLLECT_DOUBLE: \
131 g_vci_cvalue->v_double = va_arg ((var_args), gdouble); \
132 break; \
133 case G_VALUE_COLLECT_POINTER: \
134 g_vci_cvalue->v_pointer = va_arg ((var_args), gpointer); \
135 break; \
136 default: \
137 g_assert_not_reached (); \
138 } \
139 } \
140 *(__error) = g_vci_vtab->collect_value (g_vci_val, \
141 g_vci_n_values, \
142 g_vci_cvalues, \
143 g_vci_flags); \
144} G_STMT_END

◆ G_VALUE_COLLECT_SKIP

#define G_VALUE_COLLECT_SKIP ( _value_type,
var_args )
Value:
GTypeValueTable *g_vcs_vtable = g_type_value_table_peek (_value_type); \
const gchar *g_vcs_collect_format = g_vcs_vtable->collect_format; \
\
while (*g_vcs_collect_format) \
{ \
switch (*g_vcs_collect_format++) \
{ \
va_arg ((var_args), gint); \
break; \
va_arg ((var_args), glong); \
break; \
va_arg ((var_args), gint64); \
break; \
va_arg ((var_args), gdouble); \
break; \
va_arg ((var_args), gpointer); \
break; \
default: \
g_assert_not_reached (); \
} \
} \
signed long gint64
Definition glibconfig.h:66
G_BEGIN_DECLS typedef char gchar
Definition gtypes.h:52
void * gpointer
Definition gtypes.h:109
int gint
Definition gtypes.h:55
long glong
Definition gtypes.h:54
double gdouble
Definition gtypes.h:64
@ G_VALUE_COLLECT_LONG
@ G_VALUE_COLLECT_INT
@ G_VALUE_COLLECT_POINTER
@ G_VALUE_COLLECT_DOUBLE
@ G_VALUE_COLLECT_INT64
const gchar * collect_format
Definition gtype.h:1446

G_VALUE_COLLECT_SKIP: @_value_type: the GType of the value to skip @var_args: the va_list variable; it may be evaluated multiple times

Skip an argument of type @_value_type from @var_args.

Definition at line 184 of file gvaluecollector.h.

184#define G_VALUE_COLLECT_SKIP(_value_type, var_args) \
185G_STMT_START { \
186 GTypeValueTable *g_vcs_vtable = g_type_value_table_peek (_value_type); \
187 const gchar *g_vcs_collect_format = g_vcs_vtable->collect_format; \
188 \
189 while (*g_vcs_collect_format) \
190 { \
191 switch (*g_vcs_collect_format++) \
192 { \
193 case G_VALUE_COLLECT_INT: \
194 va_arg ((var_args), gint); \
195 break; \
196 case G_VALUE_COLLECT_LONG: \
197 va_arg ((var_args), glong); \
198 break; \
199 case G_VALUE_COLLECT_INT64: \
200 va_arg ((var_args), gint64); \
201 break; \
202 case G_VALUE_COLLECT_DOUBLE: \
203 va_arg ((var_args), gdouble); \
204 break; \
205 case G_VALUE_COLLECT_POINTER: \
206 va_arg ((var_args), gpointer); \
207 break; \
208 default: \
209 g_assert_not_reached (); \
210 } \
211 } \
212} G_STMT_END

◆ G_VALUE_LCOPY

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

G_VALUE_LCOPY: @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

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

This is the inverse of G_VALUE_COLLECT().

Definition at line 228 of file gvaluecollector.h.

228#define G_VALUE_LCOPY(value, var_args, flags, __error) \
229G_STMT_START { \
230 const GValue *g_vl_value = (value); \
231 guint g_vl_flags = (flags); \
232 GType g_vl_value_type = G_VALUE_TYPE (g_vl_value); \
233 GTypeValueTable *g_vl_vtable = g_type_value_table_peek (g_vl_value_type); \
234 const gchar *g_vl_lcopy_format = g_vl_vtable->lcopy_format; \
235 GTypeCValue g_vl_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, }; \
236 guint g_vl_n_values = 0; \
237 \
238 while (*g_vl_lcopy_format) \
239 { \
240 GTypeCValue *g_vl_cvalue = g_vl_cvalues + g_vl_n_values++; \
241 \
242 switch (*g_vl_lcopy_format++) \
243 { \
244 case G_VALUE_COLLECT_INT: \
245 g_vl_cvalue->v_int = va_arg ((var_args), gint); \
246 break; \
247 case G_VALUE_COLLECT_LONG: \
248 g_vl_cvalue->v_long = va_arg ((var_args), glong); \
249 break; \
250 case G_VALUE_COLLECT_INT64: \
251 g_vl_cvalue->v_int64 = va_arg ((var_args), gint64); \
252 break; \
253 case G_VALUE_COLLECT_DOUBLE: \
254 g_vl_cvalue->v_double = va_arg ((var_args), gdouble); \
255 break; \
256 case G_VALUE_COLLECT_POINTER: \
257 g_vl_cvalue->v_pointer = va_arg ((var_args), gpointer); \
258 break; \
259 default: \
260 g_assert_not_reached (); \
261 } \
262 } \
263 *(__error) = g_vl_vtable->lcopy_value (g_vl_value, \
264 g_vl_n_values, \
265 g_vl_cvalues, \
266 g_vl_flags); \
267} G_STMT_END

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
G_VALUE_COLLECT_INT 
G_VALUE_COLLECT_LONG 
G_VALUE_COLLECT_INT64 
G_VALUE_COLLECT_DOUBLE 
G_VALUE_COLLECT_POINTER 

Definition at line 34 of file gvaluecollector.h.