gvaluetypes.c revision 1e46cf8099b2d4575286d5a9272aa8f4be056a57
109f8e937f21552d441a5a2b06767a67459195653Tim Janik/* GObject - GLib Type, Object, Parameter and Signal Library 209f8e937f21552d441a5a2b06767a67459195653Tim Janik * Copyright (C) 1997, 1998, 1999, 2000 Tim Janik and Red Hat, Inc. 309f8e937f21552d441a5a2b06767a67459195653Tim Janik * 409f8e937f21552d441a5a2b06767a67459195653Tim Janik * This library is free software; you can redistribute it and/or 509f8e937f21552d441a5a2b06767a67459195653Tim Janik * modify it under the terms of the GNU Lesser General Public 609f8e937f21552d441a5a2b06767a67459195653Tim Janik * License as published by the Free Software Foundation; either 709f8e937f21552d441a5a2b06767a67459195653Tim Janik * version 2 of the License, or (at your option) any later version. 809f8e937f21552d441a5a2b06767a67459195653Tim Janik * 909f8e937f21552d441a5a2b06767a67459195653Tim Janik * This library is distributed in the hope that it will be useful, 1009f8e937f21552d441a5a2b06767a67459195653Tim Janik * but WITHOUT ANY WARRANTY; without even the implied warranty of 1109f8e937f21552d441a5a2b06767a67459195653Tim Janik * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1209f8e937f21552d441a5a2b06767a67459195653Tim Janik * Lesser General Public License for more details. 1309f8e937f21552d441a5a2b06767a67459195653Tim Janik * 1409f8e937f21552d441a5a2b06767a67459195653Tim Janik * You should have received a copy of the GNU Lesser General 1509f8e937f21552d441a5a2b06767a67459195653Tim Janik * Public License along with this library; if not, write to the 1609f8e937f21552d441a5a2b06767a67459195653Tim Janik * Free Software Foundation, Inc., 59 Temple Place, Suite 330, 1709f8e937f21552d441a5a2b06767a67459195653Tim Janik * Boston, MA 02111-1307, USA. 1809f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 1909f8e937f21552d441a5a2b06767a67459195653Tim Janik#include "gvaluetypes.h" 2009f8e937f21552d441a5a2b06767a67459195653Tim Janik 2109f8e937f21552d441a5a2b06767a67459195653Tim Janik#include "gvaluecollector.h" 2209f8e937f21552d441a5a2b06767a67459195653Tim Janik#include <string.h> 2309f8e937f21552d441a5a2b06767a67459195653Tim Janik 2409f8e937f21552d441a5a2b06767a67459195653Tim Janik 2509f8e937f21552d441a5a2b06767a67459195653Tim Janik/* --- value functions --- */ 2609f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 2709f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_long0_init (GValue *value) 2809f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 2909f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_long = 0; 3009f8e937f21552d441a5a2b06767a67459195653Tim Janik} 3109f8e937f21552d441a5a2b06767a67459195653Tim Janik 3209f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 3309f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_long0_copy (const GValue *src_value, 3409f8e937f21552d441a5a2b06767a67459195653Tim Janik GValue *dest_value) 3509f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 3609f8e937f21552d441a5a2b06767a67459195653Tim Janik dest_value->data[0].v_long = src_value->data[0].v_long; 3709f8e937f21552d441a5a2b06767a67459195653Tim Janik} 3809f8e937f21552d441a5a2b06767a67459195653Tim Janik 3909f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 4009f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_char_lcopy_value (const GValue *value, 4109f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 4209f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 4309f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 4409f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 4509f8e937f21552d441a5a2b06767a67459195653Tim Janik gint8 *int8_p = collect_value->v_pointer; 4609f8e937f21552d441a5a2b06767a67459195653Tim Janik 4709f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!int8_p) 4809f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 4909f8e937f21552d441a5a2b06767a67459195653Tim Janik 5009f8e937f21552d441a5a2b06767a67459195653Tim Janik *int8_p = value->data[0].v_int; 5109f8e937f21552d441a5a2b06767a67459195653Tim Janik 5209f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 5309f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 5409f8e937f21552d441a5a2b06767a67459195653Tim Janik} 5509f8e937f21552d441a5a2b06767a67459195653Tim Janik 5609f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 5709f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_boolean_lcopy_value (const GValue *value, 5809f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 5909f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 6009f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 6109f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 6209f8e937f21552d441a5a2b06767a67459195653Tim Janik gboolean *bool_p = collect_value->v_pointer; 6309f8e937f21552d441a5a2b06767a67459195653Tim Janik 6409f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!bool_p) 6509f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 6609f8e937f21552d441a5a2b06767a67459195653Tim Janik 6709f8e937f21552d441a5a2b06767a67459195653Tim Janik *bool_p = value->data[0].v_int; 6809f8e937f21552d441a5a2b06767a67459195653Tim Janik 6909f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 7009f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 7109f8e937f21552d441a5a2b06767a67459195653Tim Janik} 7209f8e937f21552d441a5a2b06767a67459195653Tim Janik 7309f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 7409f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_int_collect_value (GValue *value, 7509f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 7609f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 7709f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 7809f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 7909f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_int = collect_value->v_int; 8009f8e937f21552d441a5a2b06767a67459195653Tim Janik 8109f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 8209f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 8309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 8409f8e937f21552d441a5a2b06767a67459195653Tim Janik 8509f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 8609f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_int_lcopy_value (const GValue *value, 8709f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 8809f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 8909f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 9009f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 9109f8e937f21552d441a5a2b06767a67459195653Tim Janik gint *int_p = collect_value->v_pointer; 9209f8e937f21552d441a5a2b06767a67459195653Tim Janik 9309f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!int_p) 9409f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 9509f8e937f21552d441a5a2b06767a67459195653Tim Janik 9609f8e937f21552d441a5a2b06767a67459195653Tim Janik *int_p = value->data[0].v_int; 9709f8e937f21552d441a5a2b06767a67459195653Tim Janik 9809f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 9909f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 10009f8e937f21552d441a5a2b06767a67459195653Tim Janik} 10109f8e937f21552d441a5a2b06767a67459195653Tim Janik 10209f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 10309f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_long_collect_value (GValue *value, 10409f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 10509f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 10609f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 10709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 10809f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_long = collect_value->v_long; 10909f8e937f21552d441a5a2b06767a67459195653Tim Janik 11009f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 11109f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 11209f8e937f21552d441a5a2b06767a67459195653Tim Janik} 11309f8e937f21552d441a5a2b06767a67459195653Tim Janik 11409f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 11509f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_long_lcopy_value (const GValue *value, 11609f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 11709f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 11809f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 11909f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 12009f8e937f21552d441a5a2b06767a67459195653Tim Janik glong *long_p = collect_value->v_pointer; 12109f8e937f21552d441a5a2b06767a67459195653Tim Janik 12209f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!long_p) 12309f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 12409f8e937f21552d441a5a2b06767a67459195653Tim Janik 12509f8e937f21552d441a5a2b06767a67459195653Tim Janik *long_p = value->data[0].v_long; 12609f8e937f21552d441a5a2b06767a67459195653Tim Janik 12709f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 12809f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 12909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 13009f8e937f21552d441a5a2b06767a67459195653Tim Janik 13109f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 13209f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_float_init (GValue *value) 13309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 13409f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_float = 0.0; 13509f8e937f21552d441a5a2b06767a67459195653Tim Janik} 13609f8e937f21552d441a5a2b06767a67459195653Tim Janik 13709f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 13809f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_float_copy (const GValue *src_value, 13909f8e937f21552d441a5a2b06767a67459195653Tim Janik GValue *dest_value) 14009f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 14109f8e937f21552d441a5a2b06767a67459195653Tim Janik dest_value->data[0].v_float = src_value->data[0].v_float; 14209f8e937f21552d441a5a2b06767a67459195653Tim Janik} 14309f8e937f21552d441a5a2b06767a67459195653Tim Janik 14409f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 14509f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_float_collect_value (GValue *value, 14609f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 14709f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 14809f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 14909f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 15009f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_float = collect_value->v_double; 15109f8e937f21552d441a5a2b06767a67459195653Tim Janik 15209f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 15309f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 15409f8e937f21552d441a5a2b06767a67459195653Tim Janik} 15509f8e937f21552d441a5a2b06767a67459195653Tim Janik 15609f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 15709f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_float_lcopy_value (const GValue *value, 15809f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 15909f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 16009f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 16109f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 16209f8e937f21552d441a5a2b06767a67459195653Tim Janik gfloat *float_p = collect_value->v_pointer; 16309f8e937f21552d441a5a2b06767a67459195653Tim Janik 16409f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!float_p) 16509f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 16609f8e937f21552d441a5a2b06767a67459195653Tim Janik 16709f8e937f21552d441a5a2b06767a67459195653Tim Janik *float_p = value->data[0].v_float; 16809f8e937f21552d441a5a2b06767a67459195653Tim Janik 16909f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 17009f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 17109f8e937f21552d441a5a2b06767a67459195653Tim Janik} 17209f8e937f21552d441a5a2b06767a67459195653Tim Janik 17309f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 17409f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_double_init (GValue *value) 17509f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 17609f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_double = 0.0; 17709f8e937f21552d441a5a2b06767a67459195653Tim Janik} 17809f8e937f21552d441a5a2b06767a67459195653Tim Janik 17909f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 18009f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_double_copy (const GValue *src_value, 18109f8e937f21552d441a5a2b06767a67459195653Tim Janik GValue *dest_value) 18209f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 18309f8e937f21552d441a5a2b06767a67459195653Tim Janik dest_value->data[0].v_double = src_value->data[0].v_double; 18409f8e937f21552d441a5a2b06767a67459195653Tim Janik} 18509f8e937f21552d441a5a2b06767a67459195653Tim Janik 18609f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 18709f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_double_collect_value (GValue *value, 18809f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 18909f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 19009f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 19109f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 19209f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_double = collect_value->v_double; 19309f8e937f21552d441a5a2b06767a67459195653Tim Janik 19409f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 19509f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 19609f8e937f21552d441a5a2b06767a67459195653Tim Janik} 19709f8e937f21552d441a5a2b06767a67459195653Tim Janik 19809f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 19909f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_double_lcopy_value (const GValue *value, 20009f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 20109f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 20209f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 20309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 20409f8e937f21552d441a5a2b06767a67459195653Tim Janik gdouble *double_p = collect_value->v_pointer; 20509f8e937f21552d441a5a2b06767a67459195653Tim Janik 20609f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!double_p) 20709f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 20809f8e937f21552d441a5a2b06767a67459195653Tim Janik 20909f8e937f21552d441a5a2b06767a67459195653Tim Janik *double_p = value->data[0].v_double; 21009f8e937f21552d441a5a2b06767a67459195653Tim Janik 21109f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 21209f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 21309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 21409f8e937f21552d441a5a2b06767a67459195653Tim Janik 21509f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 21609f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_string_init (GValue *value) 21709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 21809f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_pointer = NULL; 21909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 22009f8e937f21552d441a5a2b06767a67459195653Tim Janik 22109f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 22209f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_string_free_value (GValue *value) 22309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 224900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik if (!(value->data[1].v_uint & G_VALUE_STATIC_TAG)) 225900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik g_free (value->data[0].v_pointer); 22609f8e937f21552d441a5a2b06767a67459195653Tim Janik} 22709f8e937f21552d441a5a2b06767a67459195653Tim Janik 22809f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 22909f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_string_copy_value (const GValue *src_value, 23009f8e937f21552d441a5a2b06767a67459195653Tim Janik GValue *dest_value) 23109f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 23209f8e937f21552d441a5a2b06767a67459195653Tim Janik dest_value->data[0].v_pointer = g_strdup (src_value->data[0].v_pointer); 23309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 23409f8e937f21552d441a5a2b06767a67459195653Tim Janik 23509f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 23609f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_string_collect_value (GValue *value, 23709f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 23809f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 23909f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 24009f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 24109f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_pointer = g_strdup (collect_value->v_pointer); 24209f8e937f21552d441a5a2b06767a67459195653Tim Janik 24309f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 24409f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 24509f8e937f21552d441a5a2b06767a67459195653Tim Janik} 24609f8e937f21552d441a5a2b06767a67459195653Tim Janik 24709f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 24809f8e937f21552d441a5a2b06767a67459195653Tim Janikvalue_string_lcopy_value (const GValue *value, 24909f8e937f21552d441a5a2b06767a67459195653Tim Janik guint nth_value, 25009f8e937f21552d441a5a2b06767a67459195653Tim Janik GType *collect_type, 25109f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeCValue *collect_value) 25209f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 25309f8e937f21552d441a5a2b06767a67459195653Tim Janik gchar **string_p = collect_value->v_pointer; 25409f8e937f21552d441a5a2b06767a67459195653Tim Janik 25509f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!string_p) 25609f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 25709f8e937f21552d441a5a2b06767a67459195653Tim Janik 25809f8e937f21552d441a5a2b06767a67459195653Tim Janik *string_p = g_strdup (value->data[0].v_pointer); 25909f8e937f21552d441a5a2b06767a67459195653Tim Janik 26009f8e937f21552d441a5a2b06767a67459195653Tim Janik *collect_type = 0; 26109f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 26209f8e937f21552d441a5a2b06767a67459195653Tim Janik} 26309f8e937f21552d441a5a2b06767a67459195653Tim Janik 264ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikstatic void 265ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikvalue_pointer_init (GValue *value) 266ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 267ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik value->data[0].v_pointer = 0; 268ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 269ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 270ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikstatic void 271ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikvalue_pointer_copy (const GValue *src_value, 272ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik GValue *dest_value) 273ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 274ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik dest_value->data[0].v_pointer = src_value->data[0].v_pointer; 275ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 276ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 277ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikstatic gpointer 278ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikvalue_pointer_peek_pointer (const GValue *value) 279ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 280ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik return value->data[0].v_pointer; 281ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 282ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 283ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikstatic gchar* 284ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikvalue_pointer_collect_value (GValue *value, 285ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik guint nth_value, 286ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik GType *collect_type, 287ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik GTypeCValue *collect_value) 288ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 289ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik value->data[0].v_pointer = collect_value->v_pointer; 290ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 291ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik *collect_type = 0; 292ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik return NULL; 293ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 294ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 295ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikstatic gchar* 296ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikvalue_pointer_lcopy_value (const GValue *value, 297ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik guint nth_value, 298ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik GType *collect_type, 299ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik GTypeCValue *collect_value) 300ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 301ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik gpointer *pointer_p = collect_value->v_pointer; 302ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 303ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik if (!pointer_p) 304ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 305ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 306ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik *pointer_p = value->data[0].v_pointer; 307ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 308ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik *collect_type = 0; 309ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik return NULL; 310ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 311ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 31209f8e937f21552d441a5a2b06767a67459195653Tim Janik 31309f8e937f21552d441a5a2b06767a67459195653Tim Janik/* --- type initialization --- */ 31409f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 31509f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_types_init (void) /* sync with gtype.c */ 31609f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 31709f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeInfo info = { 31809f8e937f21552d441a5a2b06767a67459195653Tim Janik 0, /* class_size */ 31909f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* base_init */ 32009f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* base_destroy */ 32109f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* class_init */ 32209f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* class_destroy */ 32309f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* class_data */ 32409f8e937f21552d441a5a2b06767a67459195653Tim Janik 0, /* instance_size */ 32509f8e937f21552d441a5a2b06767a67459195653Tim Janik 0, /* n_preallocs */ 32609f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* instance_init */ 32709f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_table */ 32809f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 32909f8e937f21552d441a5a2b06767a67459195653Tim Janik const GTypeFundamentalInfo finfo = { G_TYPE_FLAG_DERIVABLE, }; 33009f8e937f21552d441a5a2b06767a67459195653Tim Janik GType type; 33109f8e937f21552d441a5a2b06767a67459195653Tim Janik 33209f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_CHAR / G_TYPE_UCHAR 33309f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 33409f8e937f21552d441a5a2b06767a67459195653Tim Janik { 33509f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 33609f8e937f21552d441a5a2b06767a67459195653Tim Janik value_long0_init, /* value_init */ 33709f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 33809f8e937f21552d441a5a2b06767a67459195653Tim Janik value_long0_copy, /* value_copy */ 339ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 34009f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_INT, /* collect_type */ 34109f8e937f21552d441a5a2b06767a67459195653Tim Janik value_int_collect_value, /* collect_value */ 34209f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_POINTER, /* lcopy_type */ 34309f8e937f21552d441a5a2b06767a67459195653Tim Janik value_char_lcopy_value, /* lcopy_value */ 34409f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 34509f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 346ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_CHAR, "gchar", &info, &finfo, 0); 34709f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_CHAR); 348ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_UCHAR, "guchar", &info, &finfo, 0); 34909f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_UCHAR); 35009f8e937f21552d441a5a2b06767a67459195653Tim Janik } 35109f8e937f21552d441a5a2b06767a67459195653Tim Janik 35209f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_BOOLEAN 35309f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 35409f8e937f21552d441a5a2b06767a67459195653Tim Janik { 35509f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 35609f8e937f21552d441a5a2b06767a67459195653Tim Janik value_long0_init, /* value_init */ 35709f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 35809f8e937f21552d441a5a2b06767a67459195653Tim Janik value_long0_copy, /* value_copy */ 359ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 36009f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_INT, /* collect_type */ 36109f8e937f21552d441a5a2b06767a67459195653Tim Janik value_int_collect_value, /* collect_value */ 36209f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_POINTER, /* lcopy_type */ 36309f8e937f21552d441a5a2b06767a67459195653Tim Janik value_boolean_lcopy_value, /* lcopy_value */ 36409f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 36509f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 366ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_BOOLEAN, "gboolean", &info, &finfo, 0); 36709f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_BOOLEAN); 36809f8e937f21552d441a5a2b06767a67459195653Tim Janik } 36909f8e937f21552d441a5a2b06767a67459195653Tim Janik 37009f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_INT / G_TYPE_UINT 37109f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 37209f8e937f21552d441a5a2b06767a67459195653Tim Janik { 37309f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 37409f8e937f21552d441a5a2b06767a67459195653Tim Janik value_long0_init, /* value_init */ 37509f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 37609f8e937f21552d441a5a2b06767a67459195653Tim Janik value_long0_copy, /* value_copy */ 377ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 37809f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_INT, /* collect_type */ 37909f8e937f21552d441a5a2b06767a67459195653Tim Janik value_int_collect_value, /* collect_value */ 38009f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_POINTER, /* lcopy_type */ 38109f8e937f21552d441a5a2b06767a67459195653Tim Janik value_int_lcopy_value, /* lcopy_value */ 38209f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 38309f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 384ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_INT, "gint", &info, &finfo, 0); 38509f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_INT); 386ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_UINT, "guint", &info, &finfo, 0); 38709f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_UINT); 38809f8e937f21552d441a5a2b06767a67459195653Tim Janik } 38909f8e937f21552d441a5a2b06767a67459195653Tim Janik 39009f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_LONG / G_TYPE_ULONG 39109f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 39209f8e937f21552d441a5a2b06767a67459195653Tim Janik { 39309f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 39409f8e937f21552d441a5a2b06767a67459195653Tim Janik value_long0_init, /* value_init */ 39509f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 39609f8e937f21552d441a5a2b06767a67459195653Tim Janik value_long0_copy, /* value_copy */ 397ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 39809f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_LONG, /* collect_type */ 39909f8e937f21552d441a5a2b06767a67459195653Tim Janik value_long_collect_value, /* collect_value */ 40009f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_POINTER, /* lcopy_type */ 40109f8e937f21552d441a5a2b06767a67459195653Tim Janik value_long_lcopy_value, /* lcopy_value */ 40209f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 40309f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 404ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_LONG, "glong", &info, &finfo, 0); 40509f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_LONG); 406ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_ULONG, "gulong", &info, &finfo, 0); 40709f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_ULONG); 40809f8e937f21552d441a5a2b06767a67459195653Tim Janik } 40909f8e937f21552d441a5a2b06767a67459195653Tim Janik 41009f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_FLOAT 41109f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 41209f8e937f21552d441a5a2b06767a67459195653Tim Janik { 41309f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 41409f8e937f21552d441a5a2b06767a67459195653Tim Janik value_float_init, /* value_init */ 41509f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 41609f8e937f21552d441a5a2b06767a67459195653Tim Janik value_float_copy, /* value_copy */ 417ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 41809f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_DOUBLE, /* collect_type */ 41909f8e937f21552d441a5a2b06767a67459195653Tim Janik value_float_collect_value, /* collect_value */ 42009f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_POINTER, /* lcopy_type */ 42109f8e937f21552d441a5a2b06767a67459195653Tim Janik value_float_lcopy_value, /* lcopy_value */ 42209f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 42309f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 424ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_FLOAT, "gfloat", &info, &finfo, 0); 42509f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_FLOAT); 42609f8e937f21552d441a5a2b06767a67459195653Tim Janik } 42709f8e937f21552d441a5a2b06767a67459195653Tim Janik 42809f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_DOUBLE 42909f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 43009f8e937f21552d441a5a2b06767a67459195653Tim Janik { 43109f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 43209f8e937f21552d441a5a2b06767a67459195653Tim Janik value_double_init, /* value_init */ 43309f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 43409f8e937f21552d441a5a2b06767a67459195653Tim Janik value_double_copy, /* value_copy */ 435ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 43609f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_DOUBLE, /* collect_type */ 43709f8e937f21552d441a5a2b06767a67459195653Tim Janik value_double_collect_value, /* collect_value */ 43809f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_POINTER, /* lcopy_type */ 43909f8e937f21552d441a5a2b06767a67459195653Tim Janik value_double_lcopy_value, /* lcopy_value */ 44009f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 44109f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 442ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_DOUBLE, "gdouble", &info, &finfo, 0); 44309f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_DOUBLE); 44409f8e937f21552d441a5a2b06767a67459195653Tim Janik } 44509f8e937f21552d441a5a2b06767a67459195653Tim Janik 44609f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_STRING 44709f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 44809f8e937f21552d441a5a2b06767a67459195653Tim Janik { 44909f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 45009f8e937f21552d441a5a2b06767a67459195653Tim Janik value_string_init, /* value_init */ 45109f8e937f21552d441a5a2b06767a67459195653Tim Janik value_string_free_value, /* value_free */ 45209f8e937f21552d441a5a2b06767a67459195653Tim Janik value_string_copy_value, /* value_copy */ 453ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik value_pointer_peek_pointer, /* value_peek_pointer */ 45409f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_POINTER, /* collect_type */ 45509f8e937f21552d441a5a2b06767a67459195653Tim Janik value_string_collect_value, /* collect_value */ 45609f8e937f21552d441a5a2b06767a67459195653Tim Janik G_VALUE_COLLECT_POINTER, /* lcopy_type */ 45709f8e937f21552d441a5a2b06767a67459195653Tim Janik value_string_lcopy_value, /* lcopy_value */ 45809f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 45909f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 460ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_STRING, "gstring", &info, &finfo, 0); 46109f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_STRING); 46209f8e937f21552d441a5a2b06767a67459195653Tim Janik } 463ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 464ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik /* G_TYPE_POINTER 465ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik */ 466ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik { 467ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik static const GTypeValueTable value_table = { 468ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik value_pointer_init, /* value_init */ 469ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_free */ 470ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik value_pointer_copy, /* value_copy */ 471ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik value_pointer_peek_pointer, /* value_peek_pointer */ 472ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik G_VALUE_COLLECT_POINTER, /* collect_type */ 473ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik value_pointer_collect_value, /* collect_value */ 474ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik G_VALUE_COLLECT_POINTER, /* lcopy_type */ 475ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik value_pointer_lcopy_value, /* lcopy_value */ 476ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik }; 477ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik info.value_table = &value_table; 478ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik type = g_type_register_fundamental (G_TYPE_POINTER, "gpointer", &info, &finfo, 0); 479ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik g_assert (type == G_TYPE_POINTER); 480ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik } 48109f8e937f21552d441a5a2b06767a67459195653Tim Janik} 48209f8e937f21552d441a5a2b06767a67459195653Tim Janik 48309f8e937f21552d441a5a2b06767a67459195653Tim Janik 48409f8e937f21552d441a5a2b06767a67459195653Tim Janik/* --- GValue functions --- */ 48509f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 48609f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_char (GValue *value, 48709f8e937f21552d441a5a2b06767a67459195653Tim Janik gint8 v_char) 48809f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 48909f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_if_fail (G_IS_VALUE_CHAR (value)); 49009f8e937f21552d441a5a2b06767a67459195653Tim Janik 49109f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_int = v_char; 49209f8e937f21552d441a5a2b06767a67459195653Tim Janik} 49309f8e937f21552d441a5a2b06767a67459195653Tim Janik 49409f8e937f21552d441a5a2b06767a67459195653Tim Janikgint8 495ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_char (const GValue *value) 49609f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 49709f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_CHAR (value), 0); 49809f8e937f21552d441a5a2b06767a67459195653Tim Janik 49909f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_int; 50009f8e937f21552d441a5a2b06767a67459195653Tim Janik} 50109f8e937f21552d441a5a2b06767a67459195653Tim Janik 50209f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 50309f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_uchar (GValue *value, 50409f8e937f21552d441a5a2b06767a67459195653Tim Janik guint8 v_uchar) 50509f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 50609f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_if_fail (G_IS_VALUE_UCHAR (value)); 50709f8e937f21552d441a5a2b06767a67459195653Tim Janik 50809f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_uint = v_uchar; 50909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 51009f8e937f21552d441a5a2b06767a67459195653Tim Janik 51109f8e937f21552d441a5a2b06767a67459195653Tim Janikguint8 512ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_uchar (const GValue *value) 51309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 51409f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_UCHAR (value), 0); 51509f8e937f21552d441a5a2b06767a67459195653Tim Janik 51609f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_uint; 51709f8e937f21552d441a5a2b06767a67459195653Tim Janik} 51809f8e937f21552d441a5a2b06767a67459195653Tim Janik 51909f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 52009f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_boolean (GValue *value, 52109f8e937f21552d441a5a2b06767a67459195653Tim Janik gboolean v_boolean) 52209f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 52309f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_if_fail (G_IS_VALUE_BOOLEAN (value)); 52409f8e937f21552d441a5a2b06767a67459195653Tim Janik 52509f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_int = v_boolean; 52609f8e937f21552d441a5a2b06767a67459195653Tim Janik} 52709f8e937f21552d441a5a2b06767a67459195653Tim Janik 52809f8e937f21552d441a5a2b06767a67459195653Tim Janikgboolean 529ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_boolean (const GValue *value) 53009f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 53109f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_BOOLEAN (value), 0); 53209f8e937f21552d441a5a2b06767a67459195653Tim Janik 53309f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_int; 53409f8e937f21552d441a5a2b06767a67459195653Tim Janik} 53509f8e937f21552d441a5a2b06767a67459195653Tim Janik 53609f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 53709f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_int (GValue *value, 53809f8e937f21552d441a5a2b06767a67459195653Tim Janik gint v_int) 53909f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 54009f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_if_fail (G_IS_VALUE_INT (value)); 54109f8e937f21552d441a5a2b06767a67459195653Tim Janik 54209f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_int = v_int; 54309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 54409f8e937f21552d441a5a2b06767a67459195653Tim Janik 54509f8e937f21552d441a5a2b06767a67459195653Tim Janikgint 546ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_int (const GValue *value) 54709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 54809f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_INT (value), 0); 54909f8e937f21552d441a5a2b06767a67459195653Tim Janik 55009f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_int; 55109f8e937f21552d441a5a2b06767a67459195653Tim Janik} 55209f8e937f21552d441a5a2b06767a67459195653Tim Janik 55309f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 55409f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_uint (GValue *value, 55509f8e937f21552d441a5a2b06767a67459195653Tim Janik guint v_uint) 55609f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 55709f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_if_fail (G_IS_VALUE_UINT (value)); 55809f8e937f21552d441a5a2b06767a67459195653Tim Janik 55909f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_uint = v_uint; 56009f8e937f21552d441a5a2b06767a67459195653Tim Janik} 56109f8e937f21552d441a5a2b06767a67459195653Tim Janik 56209f8e937f21552d441a5a2b06767a67459195653Tim Janikguint 563ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_uint (const GValue *value) 56409f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 56509f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_UINT (value), 0); 56609f8e937f21552d441a5a2b06767a67459195653Tim Janik 56709f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_uint; 56809f8e937f21552d441a5a2b06767a67459195653Tim Janik} 56909f8e937f21552d441a5a2b06767a67459195653Tim Janik 57009f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 57109f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_long (GValue *value, 57209f8e937f21552d441a5a2b06767a67459195653Tim Janik glong v_long) 57309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 57409f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_if_fail (G_IS_VALUE_LONG (value)); 57509f8e937f21552d441a5a2b06767a67459195653Tim Janik 57609f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_long = v_long; 57709f8e937f21552d441a5a2b06767a67459195653Tim Janik} 57809f8e937f21552d441a5a2b06767a67459195653Tim Janik 57909f8e937f21552d441a5a2b06767a67459195653Tim Janikglong 580ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_long (const GValue *value) 58109f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 58209f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_LONG (value), 0); 58309f8e937f21552d441a5a2b06767a67459195653Tim Janik 58409f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_long; 58509f8e937f21552d441a5a2b06767a67459195653Tim Janik} 58609f8e937f21552d441a5a2b06767a67459195653Tim Janik 58709f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 58809f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_ulong (GValue *value, 58909f8e937f21552d441a5a2b06767a67459195653Tim Janik gulong v_ulong) 59009f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 59109f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_if_fail (G_IS_VALUE_ULONG (value)); 59209f8e937f21552d441a5a2b06767a67459195653Tim Janik 59309f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_ulong = v_ulong; 59409f8e937f21552d441a5a2b06767a67459195653Tim Janik} 59509f8e937f21552d441a5a2b06767a67459195653Tim Janik 59609f8e937f21552d441a5a2b06767a67459195653Tim Janikgulong 597ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_ulong (const GValue *value) 59809f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 59909f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_ULONG (value), 0); 60009f8e937f21552d441a5a2b06767a67459195653Tim Janik 60109f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_ulong; 60209f8e937f21552d441a5a2b06767a67459195653Tim Janik} 60309f8e937f21552d441a5a2b06767a67459195653Tim Janik 60409f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 60509f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_float (GValue *value, 60609f8e937f21552d441a5a2b06767a67459195653Tim Janik gfloat v_float) 60709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 60809f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_if_fail (G_IS_VALUE_FLOAT (value)); 60909f8e937f21552d441a5a2b06767a67459195653Tim Janik 61009f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_float = v_float; 61109f8e937f21552d441a5a2b06767a67459195653Tim Janik} 61209f8e937f21552d441a5a2b06767a67459195653Tim Janik 61309f8e937f21552d441a5a2b06767a67459195653Tim Janikgfloat 614ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_float (const GValue *value) 61509f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 61609f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_FLOAT (value), 0); 61709f8e937f21552d441a5a2b06767a67459195653Tim Janik 61809f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_float; 61909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 62009f8e937f21552d441a5a2b06767a67459195653Tim Janik 62109f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 62209f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_double (GValue *value, 62309f8e937f21552d441a5a2b06767a67459195653Tim Janik gdouble v_double) 62409f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 62509f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_if_fail (G_IS_VALUE_DOUBLE (value)); 62609f8e937f21552d441a5a2b06767a67459195653Tim Janik 62709f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_double = v_double; 62809f8e937f21552d441a5a2b06767a67459195653Tim Janik} 62909f8e937f21552d441a5a2b06767a67459195653Tim Janik 63009f8e937f21552d441a5a2b06767a67459195653Tim Janikgdouble 631ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_double (const GValue *value) 63209f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 63309f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_DOUBLE (value), 0); 63409f8e937f21552d441a5a2b06767a67459195653Tim Janik 63509f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_double; 63609f8e937f21552d441a5a2b06767a67459195653Tim Janik} 63709f8e937f21552d441a5a2b06767a67459195653Tim Janik 63809f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 63909f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_string (GValue *value, 64009f8e937f21552d441a5a2b06767a67459195653Tim Janik const gchar *v_string) 64109f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 64209f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_if_fail (G_IS_VALUE_STRING (value)); 64309f8e937f21552d441a5a2b06767a67459195653Tim Janik 644900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik if (value->data[1].v_uint & G_VALUE_STATIC_TAG) 645900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik value->data[1].v_uint = 0; 646900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik else 647900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik g_free (value->data[0].v_pointer); 64809f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_pointer = g_strdup (v_string); 64909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 65009f8e937f21552d441a5a2b06767a67459195653Tim Janik 651900d0ed069fe09201d0c58813d1560b6845cef1dTim Janikvoid 652900d0ed069fe09201d0c58813d1560b6845cef1dTim Janikg_value_set_static_string (GValue *value, 653900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik const gchar *v_string) 654900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik{ 655900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik g_return_if_fail (G_IS_VALUE_STRING (value)); 656900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik 657900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik if (!(value->data[1].v_uint & G_VALUE_STATIC_TAG)) 658900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik g_free (value->data[0].v_pointer); 659900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik value->data[1].v_uint = G_VALUE_STATIC_TAG; 660900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik value->data[0].v_pointer = (gchar*) v_string; 661900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik} 662900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik 66309f8e937f21552d441a5a2b06767a67459195653Tim Janikgchar* 664ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_string (const GValue *value) 66509f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 66609f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_STRING (value), NULL); 66709f8e937f21552d441a5a2b06767a67459195653Tim Janik 66809f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_pointer; 66909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 67009f8e937f21552d441a5a2b06767a67459195653Tim Janik 67109f8e937f21552d441a5a2b06767a67459195653Tim Janikgchar* 672ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_dup_string (const GValue *value) 67309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 67409f8e937f21552d441a5a2b06767a67459195653Tim Janik g_return_val_if_fail (G_IS_VALUE_STRING (value), NULL); 67509f8e937f21552d441a5a2b06767a67459195653Tim Janik 67609f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup (value->data[0].v_pointer); 67709f8e937f21552d441a5a2b06767a67459195653Tim Janik} 678ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 679ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikvoid 680ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_set_pointer (GValue *value, 681ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik gpointer v_pointer) 682ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 683ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik g_return_if_fail (G_IS_VALUE_POINTER (value)); 684ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 685ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik value->data[0].v_pointer = v_pointer; 686ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 687ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 688ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikgpointer 6891e46cf8099b2d4575286d5a9272aa8f4be056a57Tim Janikg_value_get_pointer (const GValue *value) 690ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 691ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik g_return_val_if_fail (G_IS_VALUE_POINTER (value), NULL); 692ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 693ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik return value->data[0].v_pointer; 694ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 695