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