/**
* SECTION:value_collection
* @Short_description: Converting varargs to generic values
- * @See_also:#GValueTable
* @Title: Varargs Value Collection
*
* The macros in this section provide the varargs parsing support needed
GValue *_val = (value); \
guint _flags = (flags); \
GTypeValueTable *_vtab = g_type_value_table_peek (_value_type); \
- gchar *_collect_format = _vtab->collect_format; \
+ const gchar *_collect_format = _vtab->collect_format; \
GTypeCValue _cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, }; \
guint _n_values = 0; \
\
G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error); \
} G_STMT_END
+#define G_VALUE_COLLECT_SKIP(_value_type, var_args) \
+G_STMT_START { \
+ GTypeValueTable *_vtable = g_type_value_table_peek (_value_type); \
+ const gchar *_collect_format = _vtable->collect_format; \
+ \
+ while (*_collect_format) \
+ { \
+ switch (*_collect_format++) \
+ { \
+ case G_VALUE_COLLECT_INT: \
+ va_arg ((var_args), gint); \
+ break; \
+ case G_VALUE_COLLECT_LONG: \
+ va_arg ((var_args), glong); \
+ break; \
+ case G_VALUE_COLLECT_INT64: \
+ va_arg ((var_args), gint64); \
+ break; \
+ case G_VALUE_COLLECT_DOUBLE: \
+ va_arg ((var_args), gdouble); \
+ break; \
+ case G_VALUE_COLLECT_POINTER: \
+ va_arg ((var_args), gpointer); \
+ break; \
+ default: \
+ g_assert_not_reached (); \
+ } \
+ } \
+} G_STMT_END
+
/**
* G_VALUE_LCOPY:
* @value: a #GValue return location. @value is supposed to be initialized
guint _flags = (flags); \
GType _value_type = G_VALUE_TYPE (_value); \
GTypeValueTable *_vtable = g_type_value_table_peek (_value_type); \
- gchar *_lcopy_format = _vtable->lcopy_format; \
+ const gchar *_lcopy_format = _vtable->lcopy_format; \
GTypeCValue _cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, }; \
guint _n_values = 0; \
\