nspluginwrapper/lsb-build/headers/glib-2.0/gobject/gvaluecollector.h

62 lines
2.6 KiB
C

#ifndef _GLIB_2_0_GOBJECT_GVALUECOLLECTOR_H_
#define _GLIB_2_0_GOBJECT_GVALUECOLLECTOR_H_
#ifdef __cplusplus
extern "C" {
#endif
#define G_VALUE_LCOPY(value,var_args,flags,__error) \
G_STMT_START { const GValue *_value = (value); 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; GTypeCValue \
_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, }; guint \
_n_values = 0; while (*_lcopy_format) { GTypeCValue *_cvalue = \
_cvalues + _n_values++; switch (*_lcopy_format++) { case \
G_VALUE_COLLECT_INT: _cvalue->v_int = va_arg ((var_args), gint); \
break; case G_VALUE_COLLECT_LONG: _cvalue->v_long = va_arg \
((var_args), glong); break; case G_VALUE_COLLECT_INT64: \
_cvalue->v_int64 = va_arg ((var_args), gint64); break; case \
G_VALUE_COLLECT_DOUBLE: _cvalue->v_double = va_arg ((var_args), \
gdouble); break; case G_VALUE_COLLECT_POINTER: _cvalue->v_pointer = \
va_arg ((var_args), gpointer); break; default: g_assert_not_reached \
(); } } *(__error) = _vtable->lcopy_value (_value, _n_values, \
_cvalues, _flags); } G_STMT_END
#define G_VALUE_COLLECT(value,var_args,flags,__error) \
G_STMT_START { GValue *_value = (value); guint _flags = (flags); \
GType _value_type = G_VALUE_TYPE (_value); GTypeValueTable *_vtable = \
g_type_value_table_peek (_value_type); gchar *_collect_format = \
_vtable->collect_format; GTypeCValue \
_cvalues[G_VALUE_COLLECT_FORMAT_MAX_LENGTH] = { { 0, }, }; guint \
_n_values = 0; if (_vtable->value_free) _vtable->value_free (_value); \
_value->g_type = _value_type; memset (_value->data, 0, sizeof \
(_value->data)); while (*_collect_format) { GTypeCValue *_cvalue = \
_cvalues + _n_values++; switch (*_collect_format++) { case \
G_VALUE_COLLECT_INT: _cvalue->v_int = va_arg ((var_args), gint); \
break; case G_VALUE_COLLECT_LONG: _cvalue->v_long = va_arg \
((var_args), glong); break; case G_VALUE_COLLECT_INT64: \
_cvalue->v_int64 = va_arg ((var_args), gint64); break; case \
G_VALUE_COLLECT_DOUBLE: _cvalue->v_double = va_arg ((var_args), \
gdouble); break; case G_VALUE_COLLECT_POINTER: _cvalue->v_pointer = \
va_arg ((var_args), gpointer); break; default: g_assert_not_reached \
(); } } *(__error) = _vtable->collect_value (_value, _n_values, \
_cvalues, _flags); } G_STMT_END
#define G_VALUE_COLLECT_FORMAT_MAX_LENGTH (8)
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'
};
#ifdef __cplusplus
}
#endif
#endif