109f8e937f21552d441a5a2b06767a67459195653Tim Janik/* GObject - GLib Type, Object, Parameter and Signal Library 237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik * Copyright (C) 1997-1999, 2000-2001 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 */ 19f0b9abe801c2e0cccb7930421a81bb77031e3251Tim Janik 20f0b9abe801c2e0cccb7930421a81bb77031e3251Tim Janik/* 21f0b9abe801c2e0cccb7930421a81bb77031e3251Tim Janik * MT safe 22f0b9abe801c2e0cccb7930421a81bb77031e3251Tim Janik */ 23f0b9abe801c2e0cccb7930421a81bb77031e3251Tim Janik 245602b7e275ef5fb76cf7847f35b120dce3111705Michael Natterer#include "config.h" 2509f8e937f21552d441a5a2b06767a67459195653Tim Janik 265602b7e275ef5fb76cf7847f35b120dce3111705Michael Natterer#include <string.h> 275602b7e275ef5fb76cf7847f35b120dce3111705Michael Natterer#include <stdlib.h> /* qsort() */ 2820b39ffafad66ba1746de6954aa85653d135a5b8Matthias Clasen 295602b7e275ef5fb76cf7847f35b120dce3111705Michael Natterer#include "gvaluetypes.h" 305602b7e275ef5fb76cf7847f35b120dce3111705Michael Natterer#include "gvaluecollector.h" 3120b39ffafad66ba1746de6954aa85653d135a5b8Matthias Clasen#include "gobject.h" 3220b39ffafad66ba1746de6954aa85653d135a5b8Matthias Clasen#include "gparam.h" 3320b39ffafad66ba1746de6954aa85653d135a5b8Matthias Clasen#include "gboxed.h" 3420b39ffafad66ba1746de6954aa85653d135a5b8Matthias Clasen#include "genums.h" 355602b7e275ef5fb76cf7847f35b120dce3111705Michael Natterer#include "gobjectalias.h" 3609f8e937f21552d441a5a2b06767a67459195653Tim Janik 3709f8e937f21552d441a5a2b06767a67459195653Tim Janik 3809f8e937f21552d441a5a2b06767a67459195653Tim Janik/* --- value functions --- */ 3909f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 4037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_init_long0 (GValue *value) 4109f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 4209f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_long = 0; 4309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 4409f8e937f21552d441a5a2b06767a67459195653Tim Janik 4509f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 4637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_copy_long0 (const GValue *src_value, 4709f8e937f21552d441a5a2b06767a67459195653Tim Janik GValue *dest_value) 4809f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 4909f8e937f21552d441a5a2b06767a67459195653Tim Janik dest_value->data[0].v_long = src_value->data[0].v_long; 5009f8e937f21552d441a5a2b06767a67459195653Tim Janik} 5109f8e937f21552d441a5a2b06767a67459195653Tim Janik 5209f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 5337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_lcopy_char (const GValue *value, 5437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 5537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 5637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 5709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 58bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik gint8 *int8_p = collect_values[0].v_pointer; 5909f8e937f21552d441a5a2b06767a67459195653Tim Janik 6009f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!int8_p) 6109f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 6209f8e937f21552d441a5a2b06767a67459195653Tim Janik 6309f8e937f21552d441a5a2b06767a67459195653Tim Janik *int8_p = value->data[0].v_int; 6409f8e937f21552d441a5a2b06767a67459195653Tim Janik 6509f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 6609f8e937f21552d441a5a2b06767a67459195653Tim Janik} 6709f8e937f21552d441a5a2b06767a67459195653Tim Janik 6809f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 6937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_lcopy_boolean (const GValue *value, 7037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 7137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 7237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 7309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 74bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik gboolean *bool_p = collect_values[0].v_pointer; 7509f8e937f21552d441a5a2b06767a67459195653Tim Janik 7609f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!bool_p) 7709f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 7809f8e937f21552d441a5a2b06767a67459195653Tim Janik 7909f8e937f21552d441a5a2b06767a67459195653Tim Janik *bool_p = value->data[0].v_int; 8009f8e937f21552d441a5a2b06767a67459195653Tim Janik 8109f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 8209f8e937f21552d441a5a2b06767a67459195653Tim Janik} 8309f8e937f21552d441a5a2b06767a67459195653Tim Janik 8409f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 8537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_collect_int (GValue *value, 8637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 8737e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 8837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 8909f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 90bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik value->data[0].v_int = collect_values[0].v_int; 9109f8e937f21552d441a5a2b06767a67459195653Tim Janik 9209f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 9309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 9409f8e937f21552d441a5a2b06767a67459195653Tim Janik 9509f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 9637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_lcopy_int (const GValue *value, 9737e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 9837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 9937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 10009f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 101bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik gint *int_p = collect_values[0].v_pointer; 10209f8e937f21552d441a5a2b06767a67459195653Tim Janik 10309f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!int_p) 10409f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 10509f8e937f21552d441a5a2b06767a67459195653Tim Janik 10609f8e937f21552d441a5a2b06767a67459195653Tim Janik *int_p = value->data[0].v_int; 10709f8e937f21552d441a5a2b06767a67459195653Tim Janik 10809f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 10909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 11009f8e937f21552d441a5a2b06767a67459195653Tim Janik 11109f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 11237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_collect_long (GValue *value, 11337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 11437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 11537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 11609f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 117bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik value->data[0].v_long = collect_values[0].v_long; 11809f8e937f21552d441a5a2b06767a67459195653Tim Janik 11909f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 12009f8e937f21552d441a5a2b06767a67459195653Tim Janik} 12109f8e937f21552d441a5a2b06767a67459195653Tim Janik 12209f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 12337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_lcopy_long (const GValue *value, 12437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 12537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 12637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 12709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 128bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik glong *long_p = collect_values[0].v_pointer; 12909f8e937f21552d441a5a2b06767a67459195653Tim Janik 13009f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!long_p) 13109f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 13209f8e937f21552d441a5a2b06767a67459195653Tim Janik 13309f8e937f21552d441a5a2b06767a67459195653Tim Janik *long_p = value->data[0].v_long; 13409f8e937f21552d441a5a2b06767a67459195653Tim Janik 13509f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 13609f8e937f21552d441a5a2b06767a67459195653Tim Janik} 13709f8e937f21552d441a5a2b06767a67459195653Tim Janik 13809f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 139d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinvalue_init_int64 (GValue *value) 140d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin{ 141d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin value->data[0].v_int64 = 0; 142d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin} 143d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 144d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinstatic void 145d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinvalue_copy_int64 (const GValue *src_value, 146a7cba8a50abfba7ee634ba194f22bdf05a189271Tim Janik GValue *dest_value) 147d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin{ 148d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin dest_value->data[0].v_int64 = src_value->data[0].v_int64; 149d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin} 150d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 151d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinstatic gchar* 152d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinvalue_collect_int64 (GValue *value, 153a7cba8a50abfba7ee634ba194f22bdf05a189271Tim Janik guint n_collect_values, 154a7cba8a50abfba7ee634ba194f22bdf05a189271Tim Janik GTypeCValue *collect_values, 155a7cba8a50abfba7ee634ba194f22bdf05a189271Tim Janik guint collect_flags) 156d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin{ 157d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin value->data[0].v_int64 = collect_values[0].v_int64; 158d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 159d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin return NULL; 160d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin} 161d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 162d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinstatic gchar* 163d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinvalue_lcopy_int64 (const GValue *value, 164a7cba8a50abfba7ee634ba194f22bdf05a189271Tim Janik guint n_collect_values, 165a7cba8a50abfba7ee634ba194f22bdf05a189271Tim Janik GTypeCValue *collect_values, 166a7cba8a50abfba7ee634ba194f22bdf05a189271Tim Janik guint collect_flags) 167d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin{ 168d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin gint64 *int64_p = collect_values[0].v_pointer; 169d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 170d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin if (!int64_p) 171d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 172d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 173d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin *int64_p = value->data[0].v_int64; 174d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 175d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin return NULL; 176d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin} 177d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 178d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinstatic void 17937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_init_float (GValue *value) 18009f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 18109f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_float = 0.0; 18209f8e937f21552d441a5a2b06767a67459195653Tim Janik} 18309f8e937f21552d441a5a2b06767a67459195653Tim Janik 18409f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 18537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_copy_float (const GValue *src_value, 18609f8e937f21552d441a5a2b06767a67459195653Tim Janik GValue *dest_value) 18709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 18809f8e937f21552d441a5a2b06767a67459195653Tim Janik dest_value->data[0].v_float = src_value->data[0].v_float; 18909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 19009f8e937f21552d441a5a2b06767a67459195653Tim Janik 19109f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 19237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_collect_float (GValue *value, 19337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 19437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 19537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 19609f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 197bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik value->data[0].v_float = collect_values[0].v_double; 19809f8e937f21552d441a5a2b06767a67459195653Tim Janik 19909f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 20009f8e937f21552d441a5a2b06767a67459195653Tim Janik} 20109f8e937f21552d441a5a2b06767a67459195653Tim Janik 20209f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 20337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_lcopy_float (const GValue *value, 20437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 20537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 20637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 20709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 208bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik gfloat *float_p = collect_values[0].v_pointer; 20909f8e937f21552d441a5a2b06767a67459195653Tim Janik 21009f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!float_p) 21109f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 21209f8e937f21552d441a5a2b06767a67459195653Tim Janik 21309f8e937f21552d441a5a2b06767a67459195653Tim Janik *float_p = value->data[0].v_float; 21409f8e937f21552d441a5a2b06767a67459195653Tim Janik 21509f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 21609f8e937f21552d441a5a2b06767a67459195653Tim Janik} 21709f8e937f21552d441a5a2b06767a67459195653Tim Janik 21809f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 21937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_init_double (GValue *value) 22009f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 22109f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_double = 0.0; 22209f8e937f21552d441a5a2b06767a67459195653Tim Janik} 22309f8e937f21552d441a5a2b06767a67459195653Tim Janik 22409f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 22537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_copy_double (const GValue *src_value, 22609f8e937f21552d441a5a2b06767a67459195653Tim Janik GValue *dest_value) 22709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 22809f8e937f21552d441a5a2b06767a67459195653Tim Janik dest_value->data[0].v_double = src_value->data[0].v_double; 22909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 23009f8e937f21552d441a5a2b06767a67459195653Tim Janik 23109f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 23237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_collect_double (GValue *value, 23337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 23437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 23537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 23609f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 237bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik value->data[0].v_double = collect_values[0].v_double; 23809f8e937f21552d441a5a2b06767a67459195653Tim Janik 23909f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 24009f8e937f21552d441a5a2b06767a67459195653Tim Janik} 24109f8e937f21552d441a5a2b06767a67459195653Tim Janik 24209f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 24337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_lcopy_double (const GValue *value, 24437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 24537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 24637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 24709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 248bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik gdouble *double_p = collect_values[0].v_pointer; 24909f8e937f21552d441a5a2b06767a67459195653Tim Janik 25009f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!double_p) 25109f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 25209f8e937f21552d441a5a2b06767a67459195653Tim Janik 25309f8e937f21552d441a5a2b06767a67459195653Tim Janik *double_p = value->data[0].v_double; 25409f8e937f21552d441a5a2b06767a67459195653Tim Janik 25509f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 25609f8e937f21552d441a5a2b06767a67459195653Tim Janik} 25709f8e937f21552d441a5a2b06767a67459195653Tim Janik 25809f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 25937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_init_string (GValue *value) 26009f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 26109f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_pointer = NULL; 26209f8e937f21552d441a5a2b06767a67459195653Tim Janik} 26309f8e937f21552d441a5a2b06767a67459195653Tim Janik 26409f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 26537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_free_string (GValue *value) 26609f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 267bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik if (!(value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS)) 268900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik g_free (value->data[0].v_pointer); 26909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 27009f8e937f21552d441a5a2b06767a67459195653Tim Janik 27109f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic void 27237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_copy_string (const GValue *src_value, 27337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GValue *dest_value) 27409f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 27509f8e937f21552d441a5a2b06767a67459195653Tim Janik dest_value->data[0].v_pointer = g_strdup (src_value->data[0].v_pointer); 27609f8e937f21552d441a5a2b06767a67459195653Tim Janik} 27709f8e937f21552d441a5a2b06767a67459195653Tim Janik 27809f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 27937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_collect_string (GValue *value, 28037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 28137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 28237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 28309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 284bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik if (!collect_values[0].v_pointer) 285bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik value->data[0].v_pointer = NULL; 286bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) 287bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik { 288bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik value->data[0].v_pointer = collect_values[0].v_pointer; 289bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik value->data[1].v_uint = G_VALUE_NOCOPY_CONTENTS; 290bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik } 291bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik else 292bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik value->data[0].v_pointer = g_strdup (collect_values[0].v_pointer); 29309f8e937f21552d441a5a2b06767a67459195653Tim Janik 29409f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 29509f8e937f21552d441a5a2b06767a67459195653Tim Janik} 29609f8e937f21552d441a5a2b06767a67459195653Tim Janik 29709f8e937f21552d441a5a2b06767a67459195653Tim Janikstatic gchar* 29837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_lcopy_string (const GValue *value, 29937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 30037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 30137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 30209f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 303bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik gchar **string_p = collect_values[0].v_pointer; 30409f8e937f21552d441a5a2b06767a67459195653Tim Janik 30509f8e937f21552d441a5a2b06767a67459195653Tim Janik if (!string_p) 30609f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 30709f8e937f21552d441a5a2b06767a67459195653Tim Janik 308bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik if (!value->data[0].v_pointer) 309bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik *string_p = NULL; 310bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) 311bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik *string_p = value->data[0].v_pointer; 312bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik else 313bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik *string_p = g_strdup (value->data[0].v_pointer); 31409f8e937f21552d441a5a2b06767a67459195653Tim Janik 31509f8e937f21552d441a5a2b06767a67459195653Tim Janik return NULL; 31609f8e937f21552d441a5a2b06767a67459195653Tim Janik} 31709f8e937f21552d441a5a2b06767a67459195653Tim Janik 318ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikstatic void 31937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_init_pointer (GValue *value) 320ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 321e773d7dba66cf51c7d6ad7d1973ab3635e986e2eTim Janik value->data[0].v_pointer = NULL; 322ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 323ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 324ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikstatic void 32537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_copy_pointer (const GValue *src_value, 326ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik GValue *dest_value) 327ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 328ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik dest_value->data[0].v_pointer = src_value->data[0].v_pointer; 329ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 330ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 331ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikstatic gpointer 33237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_peek_pointer0 (const GValue *value) 333ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 334ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik return value->data[0].v_pointer; 335ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 336ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 337ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikstatic gchar* 33837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_collect_pointer (GValue *value, 33937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 34037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 34137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 342ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 343bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik value->data[0].v_pointer = collect_values[0].v_pointer; 344ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 345ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik return NULL; 346ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 347ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 348ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikstatic gchar* 34937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvalue_lcopy_pointer (const GValue *value, 35037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint n_collect_values, 35137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik GTypeCValue *collect_values, 35237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guint collect_flags) 353ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 354bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik gpointer *pointer_p = collect_values[0].v_pointer; 355ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 356ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik if (!pointer_p) 357ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); 358ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 359ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik *pointer_p = value->data[0].v_pointer; 360ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 361ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik return NULL; 362ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 363ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 36409f8e937f21552d441a5a2b06767a67459195653Tim Janik 36509f8e937f21552d441a5a2b06767a67459195653Tim Janik/* --- type initialization --- */ 36609f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 367465c7d1ead296b70b8d47ca333554a18f71da11dMatthias Claseng_value_types_init (void) 36809f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 36909f8e937f21552d441a5a2b06767a67459195653Tim Janik GTypeInfo info = { 37009f8e937f21552d441a5a2b06767a67459195653Tim Janik 0, /* class_size */ 37109f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* base_init */ 37209f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* base_destroy */ 37309f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* class_init */ 37409f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* class_destroy */ 37509f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* class_data */ 37609f8e937f21552d441a5a2b06767a67459195653Tim Janik 0, /* instance_size */ 37709f8e937f21552d441a5a2b06767a67459195653Tim Janik 0, /* n_preallocs */ 37809f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* instance_init */ 37909f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_table */ 38009f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 38109f8e937f21552d441a5a2b06767a67459195653Tim Janik const GTypeFundamentalInfo finfo = { G_TYPE_FLAG_DERIVABLE, }; 38209f8e937f21552d441a5a2b06767a67459195653Tim Janik GType type; 38309f8e937f21552d441a5a2b06767a67459195653Tim Janik 38409f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_CHAR / G_TYPE_UCHAR 38509f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 38609f8e937f21552d441a5a2b06767a67459195653Tim Janik { 38709f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 38837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_init_long0, /* value_init */ 38909f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 39037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_copy_long0, /* value_copy */ 391ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 392bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik "i", /* collect_format */ 39337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_collect_int, /* collect_value */ 394bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik "p", /* lcopy_format */ 39537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_lcopy_char, /* lcopy_value */ 39609f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 39709f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 39807c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_CHAR, g_intern_static_string ("gchar"), &info, &finfo, 0); 39909f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_CHAR); 40007c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_UCHAR, g_intern_static_string ("guchar"), &info, &finfo, 0); 40109f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_UCHAR); 40209f8e937f21552d441a5a2b06767a67459195653Tim Janik } 40309f8e937f21552d441a5a2b06767a67459195653Tim Janik 40409f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_BOOLEAN 40509f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 40609f8e937f21552d441a5a2b06767a67459195653Tim Janik { 40709f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 40837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_init_long0, /* value_init */ 40909f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 41037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_copy_long0, /* value_copy */ 411ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 412bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik "i", /* collect_format */ 41337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_collect_int, /* collect_value */ 414bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik "p", /* lcopy_format */ 41537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_lcopy_boolean, /* lcopy_value */ 41609f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 41709f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 41807c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_BOOLEAN, g_intern_static_string ("gboolean"), &info, &finfo, 0); 41909f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_BOOLEAN); 42009f8e937f21552d441a5a2b06767a67459195653Tim Janik } 42109f8e937f21552d441a5a2b06767a67459195653Tim Janik 42209f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_INT / G_TYPE_UINT 42309f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 42409f8e937f21552d441a5a2b06767a67459195653Tim Janik { 42509f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 42637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_init_long0, /* value_init */ 42709f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 42837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_copy_long0, /* value_copy */ 429ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 430bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik "i", /* collect_format */ 43137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_collect_int, /* collect_value */ 432bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik "p", /* lcopy_format */ 43337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_lcopy_int, /* lcopy_value */ 43409f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 43509f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 43607c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_INT, g_intern_static_string ("gint"), &info, &finfo, 0); 43709f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_INT); 43807c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_UINT, g_intern_static_string ("guint"), &info, &finfo, 0); 43909f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_UINT); 44009f8e937f21552d441a5a2b06767a67459195653Tim Janik } 44109f8e937f21552d441a5a2b06767a67459195653Tim Janik 44209f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_LONG / G_TYPE_ULONG 44309f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 44409f8e937f21552d441a5a2b06767a67459195653Tim Janik { 44509f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 44637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_init_long0, /* value_init */ 44709f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 44837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_copy_long0, /* value_copy */ 449ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 450bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik "l", /* collect_format */ 45137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_collect_long, /* collect_value */ 452bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik "p", /* lcopy_format */ 45337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_lcopy_long, /* lcopy_value */ 45409f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 45509f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 45607c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_LONG, g_intern_static_string ("glong"), &info, &finfo, 0); 45709f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_LONG); 45807c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_ULONG, g_intern_static_string ("gulong"), &info, &finfo, 0); 45909f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_ULONG); 46009f8e937f21552d441a5a2b06767a67459195653Tim Janik } 46109f8e937f21552d441a5a2b06767a67459195653Tim Janik 462d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin /* G_TYPE_INT64 / G_TYPE_UINT64 463d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin */ 464d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin { 465d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin static const GTypeValueTable value_table = { 466d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin value_init_int64, /* value_init */ 467d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin NULL, /* value_free */ 468d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin value_copy_int64, /* value_copy */ 469d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin NULL, /* value_peek_pointer */ 470d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin "q", /* collect_format */ 471d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin value_collect_int64, /* collect_value */ 472d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin "p", /* lcopy_format */ 473a7cba8a50abfba7ee634ba194f22bdf05a189271Tim Janik value_lcopy_int64, /* lcopy_value */ 474d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin }; 475d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin info.value_table = &value_table; 47607c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_INT64, g_intern_static_string ("gint64"), &info, &finfo, 0); 477d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin g_assert (type == G_TYPE_INT64); 47807c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_UINT64, g_intern_static_string ("guint64"), &info, &finfo, 0); 479d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin g_assert (type == G_TYPE_UINT64); 480d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin } 481d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 48209f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_FLOAT 48309f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 48409f8e937f21552d441a5a2b06767a67459195653Tim Janik { 48509f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 48637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_init_float, /* value_init */ 48709f8e937f21552d441a5a2b06767a67459195653Tim Janik NULL, /* value_free */ 48837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_copy_float, /* value_copy */ 489ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik NULL, /* value_peek_pointer */ 490bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik "d", /* collect_format */ 49137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_collect_float, /* collect_value */ 492bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik "p", /* lcopy_format */ 49337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_lcopy_float, /* lcopy_value */ 49409f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 49509f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 49607c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_FLOAT, g_intern_static_string ("gfloat"), &info, &finfo, 0); 49709f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_FLOAT); 49809f8e937f21552d441a5a2b06767a67459195653Tim Janik } 49909f8e937f21552d441a5a2b06767a67459195653Tim Janik 50009f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_DOUBLE 50109f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 50209f8e937f21552d441a5a2b06767a67459195653Tim Janik { 50309f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 50437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_init_double, /* value_init */ 50537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik NULL, /* value_free */ 50637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_copy_double, /* value_copy */ 50737e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik NULL, /* value_peek_pointer */ 50837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik "d", /* collect_format */ 50937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_collect_double, /* collect_value */ 51037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik "p", /* lcopy_format */ 51137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_lcopy_double, /* lcopy_value */ 51209f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 51309f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 51407c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_DOUBLE, g_intern_static_string ("gdouble"), &info, &finfo, 0); 51509f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_DOUBLE); 51609f8e937f21552d441a5a2b06767a67459195653Tim Janik } 51709f8e937f21552d441a5a2b06767a67459195653Tim Janik 51809f8e937f21552d441a5a2b06767a67459195653Tim Janik /* G_TYPE_STRING 51909f8e937f21552d441a5a2b06767a67459195653Tim Janik */ 52009f8e937f21552d441a5a2b06767a67459195653Tim Janik { 52109f8e937f21552d441a5a2b06767a67459195653Tim Janik static const GTypeValueTable value_table = { 52237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_init_string, /* value_init */ 52337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_free_string, /* value_free */ 52437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_copy_string, /* value_copy */ 52537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_peek_pointer0, /* value_peek_pointer */ 52637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik "p", /* collect_format */ 52737e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_collect_string, /* collect_value */ 52837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik "p", /* lcopy_format */ 52937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_lcopy_string, /* lcopy_value */ 53009f8e937f21552d441a5a2b06767a67459195653Tim Janik }; 53109f8e937f21552d441a5a2b06767a67459195653Tim Janik info.value_table = &value_table; 53207c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_STRING, g_intern_static_string ("gchararray"), &info, &finfo, 0); 53309f8e937f21552d441a5a2b06767a67459195653Tim Janik g_assert (type == G_TYPE_STRING); 53409f8e937f21552d441a5a2b06767a67459195653Tim Janik } 535ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 536ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik /* G_TYPE_POINTER 537ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik */ 538ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik { 539ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik static const GTypeValueTable value_table = { 54037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_init_pointer, /* value_init */ 54137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik NULL, /* value_free */ 54237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_copy_pointer, /* value_copy */ 54337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_peek_pointer0, /* value_peek_pointer */ 54437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik "p", /* collect_format */ 54537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_collect_pointer, /* collect_value */ 54637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik "p", /* lcopy_format */ 54737e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value_lcopy_pointer, /* lcopy_value */ 548ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik }; 549ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik info.value_table = &value_table; 55007c4d80d55c6b818c3cc4a9535015b0d235b1776Matthias Clasen type = g_type_register_fundamental (G_TYPE_POINTER, g_intern_static_string ("gpointer"), &info, &finfo, 0); 551ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik g_assert (type == G_TYPE_POINTER); 552ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik } 55309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 55409f8e937f21552d441a5a2b06767a67459195653Tim Janik 55509f8e937f21552d441a5a2b06767a67459195653Tim Janik 55609f8e937f21552d441a5a2b06767a67459195653Tim Janik/* --- GValue functions --- */ 557fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 558fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_char: 559fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_CHAR 560fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_char: character value to be set 5616347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 562fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_CHAR #GValue to @v_char. 563fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 56409f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 56509f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_char (GValue *value, 56637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik gchar v_char) 56709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 56837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_CHAR (value)); 56909f8e937f21552d441a5a2b06767a67459195653Tim Janik 57009f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_int = v_char; 57109f8e937f21552d441a5a2b06767a67459195653Tim Janik} 57209f8e937f21552d441a5a2b06767a67459195653Tim Janik 573fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 574fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_char: 575fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_CHAR 5766347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 577fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_CHAR #GValue. 578fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * 579fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: character contents of @value 580fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 58137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikgchar 582ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_char (const GValue *value) 58309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 58437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_CHAR (value), 0); 58509f8e937f21552d441a5a2b06767a67459195653Tim Janik 58609f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_int; 58709f8e937f21552d441a5a2b06767a67459195653Tim Janik} 58809f8e937f21552d441a5a2b06767a67459195653Tim Janik 589fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 590fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_uchar: 591fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_UCHAR 592fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_uchar: unsigned character value to be set 5936347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 594fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_UCHAR #GValue to @v_uchar. 595fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 59609f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 59709f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_uchar (GValue *value, 59837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik guchar v_uchar) 59909f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 60037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_UCHAR (value)); 60109f8e937f21552d441a5a2b06767a67459195653Tim Janik 60209f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_uint = v_uchar; 60309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 60409f8e937f21552d441a5a2b06767a67459195653Tim Janik 605fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 606fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_uchar: 607fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_UCHAR 6086347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 609fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_UCHAR #GValue. 6106347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 611fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: unsigned character contents of @value 612fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 61337e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikguchar 614ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_uchar (const GValue *value) 61509f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 61637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_UCHAR (value), 0); 61709f8e937f21552d441a5a2b06767a67459195653Tim Janik 61809f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_uint; 61909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 62009f8e937f21552d441a5a2b06767a67459195653Tim Janik 621fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 622fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_boolean: 623fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_BOOLEAN 624fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_boolean: boolean value to be set 6256347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 626fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_BOOLEAN #GValue to @v_boolean. 627fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 62809f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 62909f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_boolean (GValue *value, 63009f8e937f21552d441a5a2b06767a67459195653Tim Janik gboolean v_boolean) 63109f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 63237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_BOOLEAN (value)); 63309f8e937f21552d441a5a2b06767a67459195653Tim Janik 63437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value->data[0].v_int = v_boolean != FALSE; 63509f8e937f21552d441a5a2b06767a67459195653Tim Janik} 63609f8e937f21552d441a5a2b06767a67459195653Tim Janik 637fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 638fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_boolean: 639fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_BOOLEAN 6406347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 641fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_BOOLEAN #GValue. 6426347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 643fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: boolean contents of @value 644fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 64509f8e937f21552d441a5a2b06767a67459195653Tim Janikgboolean 646ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_boolean (const GValue *value) 64709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 64837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_BOOLEAN (value), 0); 64909f8e937f21552d441a5a2b06767a67459195653Tim Janik 65009f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_int; 65109f8e937f21552d441a5a2b06767a67459195653Tim Janik} 65209f8e937f21552d441a5a2b06767a67459195653Tim Janik 653fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 654fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_int: 655fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_INT 656fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_int: integer value to be set 6576347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 658fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_INT #GValue to @v_int. 659fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 66009f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 66109f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_int (GValue *value, 66209f8e937f21552d441a5a2b06767a67459195653Tim Janik gint v_int) 66309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 66437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_INT (value)); 66509f8e937f21552d441a5a2b06767a67459195653Tim Janik 66609f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_int = v_int; 66709f8e937f21552d441a5a2b06767a67459195653Tim Janik} 66809f8e937f21552d441a5a2b06767a67459195653Tim Janik 669fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 670fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_int: 671fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_INT 6726347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 673fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_INT #GValue. 6746347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 675fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: integer contents of @value 676fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 67709f8e937f21552d441a5a2b06767a67459195653Tim Janikgint 678ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_int (const GValue *value) 67909f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 68037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_INT (value), 0); 68109f8e937f21552d441a5a2b06767a67459195653Tim Janik 68209f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_int; 68309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 68409f8e937f21552d441a5a2b06767a67459195653Tim Janik 685fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 686fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_uint: 687fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_UINT 688fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_uint: unsigned integer value to be set 6896347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 690fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_UINT #GValue to @v_uint. 691fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 69209f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 69309f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_uint (GValue *value, 69409f8e937f21552d441a5a2b06767a67459195653Tim Janik guint v_uint) 69509f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 69637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_UINT (value)); 69709f8e937f21552d441a5a2b06767a67459195653Tim Janik 69809f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_uint = v_uint; 69909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 70009f8e937f21552d441a5a2b06767a67459195653Tim Janik 701fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 702fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_uint: 703fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_UINT 7046347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 705fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_UINT #GValue. 7066347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 707fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: unsigned integer contents of @value 708fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 70909f8e937f21552d441a5a2b06767a67459195653Tim Janikguint 710ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_uint (const GValue *value) 71109f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 71237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_UINT (value), 0); 71309f8e937f21552d441a5a2b06767a67459195653Tim Janik 71409f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_uint; 71509f8e937f21552d441a5a2b06767a67459195653Tim Janik} 71609f8e937f21552d441a5a2b06767a67459195653Tim Janik 717fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 718fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_long: 719fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_LONG 720fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_long: long integer value to be set 7216347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 722fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_LONG #GValue to @v_long. 723fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 72409f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 72509f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_long (GValue *value, 72609f8e937f21552d441a5a2b06767a67459195653Tim Janik glong v_long) 72709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 72837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_LONG (value)); 72909f8e937f21552d441a5a2b06767a67459195653Tim Janik 73009f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_long = v_long; 73109f8e937f21552d441a5a2b06767a67459195653Tim Janik} 73209f8e937f21552d441a5a2b06767a67459195653Tim Janik 733fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 734fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_long: 735fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_LONG 7366347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 737fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_LONG #GValue. 7386347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 739fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: long integer contents of @value 740fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 74109f8e937f21552d441a5a2b06767a67459195653Tim Janikglong 742ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_long (const GValue *value) 74309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 74437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_LONG (value), 0); 74509f8e937f21552d441a5a2b06767a67459195653Tim Janik 74609f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_long; 74709f8e937f21552d441a5a2b06767a67459195653Tim Janik} 74809f8e937f21552d441a5a2b06767a67459195653Tim Janik 749fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 750fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_ulong: 751fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_ULONG 752fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_ulong: unsigned long integer value to be set 7536347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 754fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_ULONG #GValue to @v_ulong. 755fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 75609f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 75709f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_ulong (GValue *value, 75809f8e937f21552d441a5a2b06767a67459195653Tim Janik gulong v_ulong) 75909f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 76037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_ULONG (value)); 76109f8e937f21552d441a5a2b06767a67459195653Tim Janik 76209f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_ulong = v_ulong; 76309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 76409f8e937f21552d441a5a2b06767a67459195653Tim Janik 765fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 766fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_ulong: 767fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_ULONG 7686347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 769fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_ULONG #GValue. 7706347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 771fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: unsigned long integer contents of @value 772fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 77309f8e937f21552d441a5a2b06767a67459195653Tim Janikgulong 774ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_ulong (const GValue *value) 77509f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 77637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_ULONG (value), 0); 77709f8e937f21552d441a5a2b06767a67459195653Tim Janik 77809f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_ulong; 77909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 78009f8e937f21552d441a5a2b06767a67459195653Tim Janik 781fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 782fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_int64: 783fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_INT64 7846347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 785fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_INT64 #GValue. 7866347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 787fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: 64bit integer contents of @value 788fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 78909f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 790d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritiking_value_set_int64 (GValue *value, 791a7cba8a50abfba7ee634ba194f22bdf05a189271Tim Janik gint64 v_int64) 792d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin{ 793d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin g_return_if_fail (G_VALUE_HOLDS_INT64 (value)); 794d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 795d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin value->data[0].v_int64 = v_int64; 796d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin} 797d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 798fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 799fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_int64: 800fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_INT64 801fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_int64: 64bit integer value to be set 8026347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 803fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_INT64 #GValue to @v_int64. 804fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 805d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikingint64 806d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritiking_value_get_int64 (const GValue *value) 807d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin{ 808d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin g_return_val_if_fail (G_VALUE_HOLDS_INT64 (value), 0); 809d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 810d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin return value->data[0].v_int64; 811d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin} 812d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 813fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 814fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_uint64: 815fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_UINT64 816fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_uint64: unsigned 64bit integer value to be set 8176347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 818fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_UINT64 #GValue to @v_uint64. 819fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 820d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinvoid 821d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritiking_value_set_uint64 (GValue *value, 822a7cba8a50abfba7ee634ba194f22bdf05a189271Tim Janik guint64 v_uint64) 823d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin{ 824d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin g_return_if_fail (G_VALUE_HOLDS_UINT64 (value)); 825d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 826d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin value->data[0].v_uint64 = v_uint64; 827d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin} 828d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 829fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 830fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_uint64: 831fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_UINT64 8326347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 833fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_UINT64 #GValue. 8346347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 835fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: unsigned 64bit integer contents of @value 836fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 837d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinguint64 838d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritiking_value_get_uint64 (const GValue *value) 839d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin{ 840d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin g_return_val_if_fail (G_VALUE_HOLDS_UINT64 (value), 0); 841d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 842d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin return value->data[0].v_uint64; 843d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin} 844d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikin 845fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 846fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_float: 847fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_FLOAT 848fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_float: float value to be set 8496347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 850fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_FLOAT #GValue to @v_float. 851fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 852d23c9a8ba863e88dd3404461302a97e559af494fJoshua N Pritikinvoid 85309f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_float (GValue *value, 85409f8e937f21552d441a5a2b06767a67459195653Tim Janik gfloat v_float) 85509f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 85637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_FLOAT (value)); 85709f8e937f21552d441a5a2b06767a67459195653Tim Janik 85809f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_float = v_float; 85909f8e937f21552d441a5a2b06767a67459195653Tim Janik} 86009f8e937f21552d441a5a2b06767a67459195653Tim Janik 861fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 862fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_float: 863fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_FLOAT 8646347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 865fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_FLOAT #GValue. 8666347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 867fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: float contents of @value 868fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 86909f8e937f21552d441a5a2b06767a67459195653Tim Janikgfloat 870ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_float (const GValue *value) 87109f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 87237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_FLOAT (value), 0); 87309f8e937f21552d441a5a2b06767a67459195653Tim Janik 87409f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_float; 87509f8e937f21552d441a5a2b06767a67459195653Tim Janik} 87609f8e937f21552d441a5a2b06767a67459195653Tim Janik 877fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 878fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_double: 879fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_DOUBLE 880fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_double: double value to be set 8816347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 882fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_DOUBLE #GValue to @v_double. 883fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 88409f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 88509f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_double (GValue *value, 88609f8e937f21552d441a5a2b06767a67459195653Tim Janik gdouble v_double) 88709f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 88837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_DOUBLE (value)); 88909f8e937f21552d441a5a2b06767a67459195653Tim Janik 89009f8e937f21552d441a5a2b06767a67459195653Tim Janik value->data[0].v_double = v_double; 89109f8e937f21552d441a5a2b06767a67459195653Tim Janik} 89209f8e937f21552d441a5a2b06767a67459195653Tim Janik 893fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 894fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_double: 895fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_DOUBLE 8966347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 897fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_DOUBLE #GValue. 8986347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 899fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: double contents of @value 900fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 90109f8e937f21552d441a5a2b06767a67459195653Tim Janikgdouble 902ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_double (const GValue *value) 90309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 90437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_DOUBLE (value), 0); 90509f8e937f21552d441a5a2b06767a67459195653Tim Janik 90609f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_double; 90709f8e937f21552d441a5a2b06767a67459195653Tim Janik} 90809f8e937f21552d441a5a2b06767a67459195653Tim Janik 909fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 910fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_string: 911fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_STRING 91263802ac67db913cacedb2d7f01b5831374b16541Matthias Clasen * @v_string: caller-owned string to be duplicated for the #GValue 9136347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 914fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_STRING #GValue to @v_string. 915fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 91609f8e937f21552d441a5a2b06767a67459195653Tim Janikvoid 91709f8e937f21552d441a5a2b06767a67459195653Tim Janikg_value_set_string (GValue *value, 91809f8e937f21552d441a5a2b06767a67459195653Tim Janik const gchar *v_string) 91909f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 920b5c20b801c0e3c713029ba3222e769194f8a0e0bMatthias Clasen gchar *new_val; 921b5c20b801c0e3c713029ba3222e769194f8a0e0bMatthias Clasen 92237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_STRING (value)); 923b5c20b801c0e3c713029ba3222e769194f8a0e0bMatthias Clasen 924b5c20b801c0e3c713029ba3222e769194f8a0e0bMatthias Clasen new_val = g_strdup (v_string); 925b5c20b801c0e3c713029ba3222e769194f8a0e0bMatthias Clasen 926bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik if (value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS) 927900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik value->data[1].v_uint = 0; 928900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik else 929900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik g_free (value->data[0].v_pointer); 930b5c20b801c0e3c713029ba3222e769194f8a0e0bMatthias Clasen 931b5c20b801c0e3c713029ba3222e769194f8a0e0bMatthias Clasen value->data[0].v_pointer = new_val; 93209f8e937f21552d441a5a2b06767a67459195653Tim Janik} 93309f8e937f21552d441a5a2b06767a67459195653Tim Janik 934fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 935fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_static_string: 936fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_STRING 937fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_string: static string to be set 9386347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 939fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_STRING #GValue to @v_string. 940fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * The string is assumed to be static, and is thus not duplicated 941fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * when setting the #GValue. 942fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 943900d0ed069fe09201d0c58813d1560b6845cef1dTim Janikvoid 944900d0ed069fe09201d0c58813d1560b6845cef1dTim Janikg_value_set_static_string (GValue *value, 945900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik const gchar *v_string) 946900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik{ 94737e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_STRING (value)); 948900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik 949bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik if (!(value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS)) 950900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik g_free (value->data[0].v_pointer); 951bbc5a3adac7d6d5dbdcf956d7d185e9910c3034bTim Janik value->data[1].v_uint = G_VALUE_NOCOPY_CONTENTS; 952900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik value->data[0].v_pointer = (gchar*) v_string; 953900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik} 954900d0ed069fe09201d0c58813d1560b6845cef1dTim Janik 955fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 956fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_string_take_ownership: 957fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_STRING 958fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_string: duplicated unowned string to be set 9596347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 960fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * This is an internal function introduced mainly for C marshallers. 9616347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 962fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Deprecated: 2.4: Use g_value_take_string() instead. 963fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 96437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikvoid 96537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janikg_value_set_string_take_ownership (GValue *value, 96637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik gchar *v_string) 96737e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik{ 968c3acb9da0c9dfff02b129258b9a8dc667514599cMatthias Clasen g_value_take_string (value, v_string); 969c3acb9da0c9dfff02b129258b9a8dc667514599cMatthias Clasen} 970c3acb9da0c9dfff02b129258b9a8dc667514599cMatthias Clasen 971fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 972fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_take_string: 973fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_STRING 97463802ac67db913cacedb2d7f01b5831374b16541Matthias Clasen * @v_string: string to take ownership of 9756347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 976fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Sets the contents of a %G_TYPE_STRING #GValue to @v_string. 9776347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 978fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Since: 2.4 979fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 980c3acb9da0c9dfff02b129258b9a8dc667514599cMatthias Clasenvoid 981c3acb9da0c9dfff02b129258b9a8dc667514599cMatthias Claseng_value_take_string (GValue *value, 982c3acb9da0c9dfff02b129258b9a8dc667514599cMatthias Clasen gchar *v_string) 983c3acb9da0c9dfff02b129258b9a8dc667514599cMatthias Clasen{ 98437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_STRING (value)); 98537e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik 98637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik if (value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS) 98737e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value->data[1].v_uint = 0; 98837e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik else 98937e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_free (value->data[0].v_pointer); 99037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik value->data[0].v_pointer = v_string; 99137e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik} 99237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik 993fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 994fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_string: 995fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_STRING 9966347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 997fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_STRING #GValue. 9986347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 999fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: string content of @value 1000fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 10011c391cc69846713b0406545146ea232efc5f34e2Havoc PenningtonG_CONST_RETURN gchar* 1002ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_get_string (const GValue *value) 100309f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 100437e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_STRING (value), NULL); 100509f8e937f21552d441a5a2b06767a67459195653Tim Janik 100609f8e937f21552d441a5a2b06767a67459195653Tim Janik return value->data[0].v_pointer; 100709f8e937f21552d441a5a2b06767a67459195653Tim Janik} 100809f8e937f21552d441a5a2b06767a67459195653Tim Janik 1009fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 1010fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_dup_string: 1011fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_STRING 10126347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 1013fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get a copy the contents of a %G_TYPE_STRING #GValue. 10146347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 1015fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: a newly allocated copy of the string content of @value 1016fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 101709f8e937f21552d441a5a2b06767a67459195653Tim Janikgchar* 1018ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_dup_string (const GValue *value) 101909f8e937f21552d441a5a2b06767a67459195653Tim Janik{ 102037e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_STRING (value), NULL); 102109f8e937f21552d441a5a2b06767a67459195653Tim Janik 102209f8e937f21552d441a5a2b06767a67459195653Tim Janik return g_strdup (value->data[0].v_pointer); 102309f8e937f21552d441a5a2b06767a67459195653Tim Janik} 1024ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 1025fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 1026fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_pointer: 1027fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of %G_TYPE_POINTER 1028fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_pointer: pointer value to be set 10296347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 1030fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a pointer #GValue to @v_pointer. 1031fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 1032ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikvoid 1033ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikg_value_set_pointer (GValue *value, 1034ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik gpointer v_pointer) 1035ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 103637e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_if_fail (G_VALUE_HOLDS_POINTER (value)); 1037ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 1038ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik value->data[0].v_pointer = v_pointer; 1039ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 1040ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 1041fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 1042fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_pointer: 1043fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of %G_TYPE_POINTER 10446347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 1045fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a pointer #GValue. 10466347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 1047fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: pointer contents of @value 1048fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 1049ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janikgpointer 10501e46cf8099b2d4575286d5a9272aa8f4be056a57Tim Janikg_value_get_pointer (const GValue *value) 1051ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik{ 105237e4b8c87e8b0574a806a6f1d2284e4ab45341b3Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_POINTER (value), NULL); 1053ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik 1054ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik return value->data[0].v_pointer; 1055ee23c09e83d06a0d131ebd234c132f1c3602c019Tim Janik} 1056009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik 10576f01d0c34f0d217b91a55ef1ec1b04d007259993Tim JanikGType 10586f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janikg_gtype_get_type (void) 10596f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik{ 10606f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik static const GTypeInfo type_info = { 0, }; 10616f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik static GType type; 10626f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik if (!type) 10636f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik type = g_type_register_static (G_TYPE_POINTER, g_intern_static_string ("GType"), &type_info, 0); 10646f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik return type; 10656f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik} 10666f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik 1067fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 1068fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_set_gtype: 1069fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_GTYPE 1070fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @v_gtype: #GType to be set 10716347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 1072fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Set the contents of a %G_TYPE_GTYPE #GValue to @v_gtype. 10736347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 1074fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Since: 2.12 1075fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 10766347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterervoid 10776f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janikg_value_set_gtype (GValue *value, 10786f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik GType v_gtype) 10796f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik{ 10806f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik g_return_if_fail (G_VALUE_HOLDS_GTYPE (value)); 10816f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik 10826f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik value->data[0].v_long = v_gtype; 10836f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik 10846f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik} 10856f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik 1086fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost/** 1087fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * g_value_get_gtype: 1088fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * @value: a valid #GValue of type %G_TYPE_GTYPE 10896347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 1090fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Get the contents of a %G_TYPE_GTYPE #GValue. 10916347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 1092fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Since: 2.12 10936347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 1094fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost * Returns: the #GType stored in @value 1095fca3fb58185ebec71040a4fc88689010e8cd8557Stefan Kost */ 10966347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael NattererGType 10976f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janikg_value_get_gtype (const GValue *value) 10986f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik{ 10996f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik g_return_val_if_fail (G_VALUE_HOLDS_GTYPE (value), 0); 11006f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik 11016f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik return value->data[0].v_long; 11026f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik} 11036f01d0c34f0d217b91a55ef1ec1b04d007259993Tim Janik 11040b9bf79ec2f3d27d0816df1f13fe8e8a28c6b138Stefan Kost/** 11050b9bf79ec2f3d27d0816df1f13fe8e8a28c6b138Stefan Kost * g_strdup_value_contents: 11060b9bf79ec2f3d27d0816df1f13fe8e8a28c6b138Stefan Kost * @value: #GValue which contents are to be described. 11076347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 11086347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * Return a newly allocated string, which describes the contents of a 11096347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * #GValue. The main purpose of this function is to describe #GValue 11106347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * contents for debugging output, the way in which the contents are 11116347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * described may change between different GLib versions. 11126347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 11130b9bf79ec2f3d27d0816df1f13fe8e8a28c6b138Stefan Kost * Returns: Newly allocated string. 11140b9bf79ec2f3d27d0816df1f13fe8e8a28c6b138Stefan Kost */ 1115009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janikgchar* 1116009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janikg_strdup_value_contents (const GValue *value) 1117009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik{ 1118009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik const gchar *src; 1119009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik gchar *contents; 1120009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik 1121009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik g_return_val_if_fail (G_IS_VALUE (value), NULL); 1122009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik 1123009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik if (G_VALUE_HOLDS_STRING (value)) 1124009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik { 1125009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik src = g_value_get_string (value); 1126009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik 1127009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik if (!src) 1128009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik contents = g_strdup ("NULL"); 1129009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik else 1130009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik { 1131009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik gchar *s = g_strescape (src, NULL); 1132009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik 1133009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik contents = g_strdup_printf ("\"%s\"", s); 1134009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik g_free (s); 1135009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik } 1136009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik } 1137009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik else if (g_value_type_transformable (G_VALUE_TYPE (value), G_TYPE_STRING)) 1138009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik { 1139009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik GValue tmp_value = { 0, }; 114045fb71949a0c0e27fe8d0948b345334f61a5c924Tim Janik gchar *s; 114145fb71949a0c0e27fe8d0948b345334f61a5c924Tim Janik 1142009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik g_value_init (&tmp_value, G_TYPE_STRING); 1143009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik g_value_transform (value, &tmp_value); 114445fb71949a0c0e27fe8d0948b345334f61a5c924Tim Janik s = g_strescape (g_value_get_string (&tmp_value), NULL); 114545fb71949a0c0e27fe8d0948b345334f61a5c924Tim Janik g_value_unset (&tmp_value); 1146009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik if (G_VALUE_HOLDS_ENUM (value) || G_VALUE_HOLDS_FLAGS (value)) 1147009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik contents = g_strdup_printf ("((%s) %s)", 1148009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik g_type_name (G_VALUE_TYPE (value)), 114945fb71949a0c0e27fe8d0948b345334f61a5c924Tim Janik s); 1150009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik else 115145fb71949a0c0e27fe8d0948b345334f61a5c924Tim Janik contents = g_strdup (s ? s : "NULL"); 115245fb71949a0c0e27fe8d0948b345334f61a5c924Tim Janik g_free (s); 1153009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik } 1154009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik else if (g_value_fits_pointer (value)) 1155009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik { 1156009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik gpointer p = g_value_peek_pointer (value); 1157009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik 1158009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik if (!p) 1159009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik contents = g_strdup ("NULL"); 1160009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik else if (G_VALUE_HOLDS_OBJECT (value)) 1161009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik contents = g_strdup_printf ("((%s*) %p)", G_OBJECT_TYPE_NAME (p), p); 1162009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik else if (G_VALUE_HOLDS_PARAM (value)) 1163009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik contents = g_strdup_printf ("((%s*) %p)", G_PARAM_SPEC_TYPE_NAME (p), p); 1164009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik else if (G_VALUE_HOLDS_BOXED (value)) 1165009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik contents = g_strdup_printf ("((%s*) %p)", g_type_name (G_VALUE_TYPE (value)), p); 1166009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik else if (G_VALUE_HOLDS_POINTER (value)) 1167009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik contents = g_strdup_printf ("((gpointer) %p)", p); 1168009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik else 1169009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik contents = g_strdup ("???"); 1170009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik } 1171009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik else 1172009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik contents = g_strdup ("???"); 1173009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik 1174009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik return contents; 1175009942e1ace7ace3fdc22ab8fff6b8e57ef040dbTim Janik} 117649d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor 117786a0f779f68f31452d3293bfddcbe8fd249ab5abStefan Kost/** 117886a0f779f68f31452d3293bfddcbe8fd249ab5abStefan Kost * g_pointer_type_register_static: 117986a0f779f68f31452d3293bfddcbe8fd249ab5abStefan Kost * @name: the name of the new pointer type. 11806347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 118186a0f779f68f31452d3293bfddcbe8fd249ab5abStefan Kost * Creates a new %G_TYPE_POINTER derived type id for a new 11826347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * pointer type with name @name. 11836347be5fb68fc3e5e9d5bfedc3cbd5349ef40074Michael Natterer * 118486a0f779f68f31452d3293bfddcbe8fd249ab5abStefan Kost * Returns: a new %G_TYPE_POINTER derived type id for @name. 118586a0f779f68f31452d3293bfddcbe8fd249ab5abStefan Kost */ 118649d9628efc0144ff63da5d09d4aa2c51e309067aOwen TaylorGType 118749d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylorg_pointer_type_register_static (const gchar *name) 118849d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor{ 118949d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor static const GTypeInfo type_info = { 119049d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor 0, /* class_size */ 119149d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor NULL, /* base_init */ 119249d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor NULL, /* base_finalize */ 119349d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor NULL, /* class_init */ 119449d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor NULL, /* class_finalize */ 119549d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor NULL, /* class_data */ 119649d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor 0, /* instance_size */ 119749d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor 0, /* n_preallocs */ 119849d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor NULL, /* instance_init */ 119949d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor NULL /* value_table */ 120049d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor }; 120149d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor GType type; 120249d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor 120349d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor g_return_val_if_fail (name != NULL, 0); 120449d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor g_return_val_if_fail (g_type_from_name (name) == 0, 0); 120549d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor 120649d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor type = g_type_register_static (G_TYPE_POINTER, name, &type_info, 0); 120749d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor 120849d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor return type; 120949d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor} 121049d9628efc0144ff63da5d09d4aa2c51e309067aOwen Taylor 12113448a27829133bebb3bf1e29a30574304c899040Matthias Clasen#define __G_VALUETYPES_C__ 12123448a27829133bebb3bf1e29a30574304c899040Matthias Clasen#include "gobjectaliasdef.c" 1213