source: trunk/third/glib2/gobject/gvaluetransform.c @ 20721

Revision 20721, 30.7 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r20720, which included commits to RCS files with non-trunk default branches.
Line 
1/* GObject - GLib Type, Object, Parameter and Signal Library
2 * Copyright (C) 2001 Red Hat, Inc.
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General
15 * Public License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
17 * Boston, MA 02111-1307, USA.
18 */
19#include        <string.h>
20
21#include        "gvalue.h"
22#include        "genums.h"
23
24
25/* same type transforms
26 */
27static void
28value_transform_memcpy_data0 (const GValue *src_value,
29                              GValue       *dest_value)
30{
31  memcpy (&dest_value->data[0], &src_value->data[0], sizeof (src_value->data[0]));
32}
33#define value_transform_int_int         value_transform_memcpy_data0
34#define value_transform_uint_uint       value_transform_memcpy_data0
35#define value_transform_long_long       value_transform_memcpy_data0
36#define value_transform_ulong_ulong     value_transform_memcpy_data0
37#define value_transform_int64_int64     value_transform_memcpy_data0
38#define value_transform_uint64_uint64   value_transform_memcpy_data0
39#define value_transform_int64_int64     value_transform_memcpy_data0
40#define value_transform_uint64_uint64   value_transform_memcpy_data0
41#define value_transform_float_float     value_transform_memcpy_data0
42#define value_transform_double_double   value_transform_memcpy_data0
43
44
45/* numeric casts
46 */
47#define DEFINE_CAST(func_name, from_member, ctype, to_member)               \
48static void                                                                 \
49value_transform_##func_name (const GValue *src_value,                       \
50                             GValue       *dest_value)                      \
51{                                                                           \
52  ctype c_value = src_value->data[0].from_member;                           \
53  dest_value->data[0].to_member = c_value;                                  \
54} extern void glib_dummy_decl (void)
55DEFINE_CAST (int_s8,            v_int,    gint8,   v_int);
56DEFINE_CAST (int_u8,            v_int,    guint8,  v_uint);
57DEFINE_CAST (int_uint,          v_int,    guint,   v_uint);
58DEFINE_CAST (int_long,          v_int,    glong,   v_long);
59DEFINE_CAST (int_ulong,         v_int,    gulong,  v_ulong);
60DEFINE_CAST (int_int64,         v_int,    gint64,  v_int64);
61DEFINE_CAST (int_uint64,        v_int,    guint64, v_uint64);
62DEFINE_CAST (int_float,         v_int,    gfloat,  v_float);
63DEFINE_CAST (int_double,        v_int,    gdouble, v_double);
64DEFINE_CAST (uint_s8,           v_uint,   gint8,   v_int);
65DEFINE_CAST (uint_u8,           v_uint,   guint8,  v_uint);
66DEFINE_CAST (uint_int,          v_uint,   gint,    v_int);
67DEFINE_CAST (uint_long,         v_uint,   glong,   v_long);
68DEFINE_CAST (uint_ulong,        v_uint,   gulong,  v_ulong);
69DEFINE_CAST (uint_int64,        v_uint,   gint64,  v_int64);
70DEFINE_CAST (uint_uint64,       v_uint,   guint64, v_uint64);
71DEFINE_CAST (uint_float,        v_uint,   gfloat,  v_float);
72DEFINE_CAST (uint_double,       v_uint,   gdouble, v_double);
73DEFINE_CAST (long_s8,           v_long,   gint8,   v_int);
74DEFINE_CAST (long_u8,           v_long,   guint8,  v_uint);
75DEFINE_CAST (long_int,          v_long,   gint,    v_int);
76DEFINE_CAST (long_uint,         v_long,   guint,   v_uint);
77DEFINE_CAST (long_ulong,        v_long,   gulong,  v_ulong);
78DEFINE_CAST (long_int64,        v_long,   gint64,  v_int64);
79DEFINE_CAST (long_uint64,       v_long,   guint64, v_uint64);
80DEFINE_CAST (long_float,        v_long,   gfloat,  v_float);
81DEFINE_CAST (long_double,       v_long,   gdouble, v_double);
82DEFINE_CAST (ulong_s8,          v_ulong,  gint8,   v_int);
83DEFINE_CAST (ulong_u8,          v_ulong,  guint8,  v_uint);
84DEFINE_CAST (ulong_int,         v_ulong,  gint,    v_int);
85DEFINE_CAST (ulong_uint,        v_ulong,  guint,   v_uint);
86DEFINE_CAST (ulong_int64,       v_ulong,  gint64,  v_int64);
87DEFINE_CAST (ulong_uint64,      v_ulong,  guint64, v_uint64);
88DEFINE_CAST (ulong_long,        v_ulong,  glong,   v_long);
89DEFINE_CAST (ulong_float,       v_ulong,  gfloat,  v_float);
90DEFINE_CAST (ulong_double,      v_ulong,  gdouble, v_double);
91DEFINE_CAST (int64_s8,          v_int64,  gint8,   v_int);
92DEFINE_CAST (int64_u8,          v_int64,  guint8,  v_uint);
93DEFINE_CAST (int64_int,         v_int64,  gint,    v_int);
94DEFINE_CAST (int64_uint,        v_int64,  guint,   v_uint);
95DEFINE_CAST (int64_long,        v_int64,  glong,   v_long);
96DEFINE_CAST (int64_uint64,      v_int64,  guint64, v_uint64);
97DEFINE_CAST (int64_ulong,       v_int64,  gulong,  v_ulong);
98DEFINE_CAST (int64_float,       v_int64,  gfloat,  v_float);
99DEFINE_CAST (int64_double,      v_int64,  gdouble, v_double);
100DEFINE_CAST (uint64_s8,         v_uint64, gint8,   v_int);
101DEFINE_CAST (uint64_u8,         v_uint64, guint8,  v_uint);
102DEFINE_CAST (uint64_int,        v_uint64, gint,    v_int);
103DEFINE_CAST (uint64_uint,       v_uint64, guint,   v_uint);
104DEFINE_CAST (uint64_long,       v_uint64, glong,   v_long);
105DEFINE_CAST (uint64_ulong,      v_uint64, gulong,  v_ulong);
106DEFINE_CAST (uint64_int64,      v_uint64, gint64,  v_int64);
107#ifdef _MSC_VER
108/* work around error C2520: conversion from unsigned __int64 to double
109 * not implemented, use signed __int64
110 * If it is supported don't miss to g_value_register_transform_func() below
111 */
112#pragma message ("Check if cast from uint64 to double is supported with msvc 6.0")
113#else
114DEFINE_CAST (uint64_float,      v_uint64, gfloat,  v_float);
115DEFINE_CAST (uint64_double,     v_uint64, gdouble, v_double);
116#endif
117DEFINE_CAST (float_s8,          v_float,  gint8,   v_int);
118DEFINE_CAST (float_u8,          v_float,  guint8,  v_uint);
119DEFINE_CAST (float_int,         v_float,  gint,    v_int);
120DEFINE_CAST (float_uint,        v_float,  guint,   v_uint);
121DEFINE_CAST (float_long,        v_float,  glong,   v_long);
122DEFINE_CAST (float_ulong,       v_float,  gulong,  v_ulong);
123DEFINE_CAST (float_int64,       v_float,  gint64,  v_int64);
124DEFINE_CAST (float_uint64,      v_float,  guint64, v_uint64);
125DEFINE_CAST (float_double,      v_float,  gdouble, v_double);
126DEFINE_CAST (double_s8,         v_double, gint8,   v_int);
127DEFINE_CAST (double_u8,         v_double, guint8,  v_uint);
128DEFINE_CAST (double_int,        v_double, gint,    v_int);
129DEFINE_CAST (double_uint,       v_double, guint,   v_uint);
130DEFINE_CAST (double_long,       v_double, glong,   v_long);
131DEFINE_CAST (double_ulong,      v_double, gulong,  v_ulong);
132DEFINE_CAST (double_int64,      v_double, gint64,  v_int64);
133DEFINE_CAST (double_uint64,     v_double, guint64, v_uint64);
134DEFINE_CAST (double_float,      v_double, gfloat,  v_float);
135
136
137/* boolean assignments
138 */
139#define DEFINE_BOOL_CHECK(func_name, from_member)                           \
140static void                                                                 \
141value_transform_##func_name (const GValue *src_value,                       \
142                             GValue       *dest_value)                      \
143{                                                                           \
144  dest_value->data[0].v_int = src_value->data[0].from_member != 0;  \
145} extern void glib_dummy_decl (void)
146DEFINE_BOOL_CHECK (int_bool,    v_int);
147DEFINE_BOOL_CHECK (uint_bool,   v_uint);
148DEFINE_BOOL_CHECK (long_bool,   v_long);
149DEFINE_BOOL_CHECK (ulong_bool,  v_uint);
150DEFINE_BOOL_CHECK (int64_bool,  v_int64);
151DEFINE_BOOL_CHECK (uint64_bool, v_uint64);
152
153
154/* string printouts
155 */
156#define DEFINE_SPRINTF(func_name, from_member, format)                      \
157static void                                                                 \
158value_transform_##func_name (const GValue *src_value,                       \
159                             GValue       *dest_value)                      \
160{                                                                           \
161  dest_value->data[0].v_pointer = g_strdup_printf ((format),                \
162                                                   src_value->data[0].from_member);             \
163} extern void glib_dummy_decl (void)
164DEFINE_SPRINTF (int_string,     v_int,    "%d");
165DEFINE_SPRINTF (uint_string,    v_uint,   "%u");
166DEFINE_SPRINTF (long_string,    v_long,   "%ld");
167DEFINE_SPRINTF (ulong_string,   v_ulong,  "%lu");
168DEFINE_SPRINTF (int64_string,   v_int64,  "%" G_GINT64_FORMAT);
169DEFINE_SPRINTF (uint64_string,  v_uint64, "%" G_GUINT64_FORMAT);
170DEFINE_SPRINTF (float_string,   v_float,  "%f");
171DEFINE_SPRINTF (double_string,  v_double, "%f");
172
173
174/* special cases
175 */
176static void
177value_transform_bool_string (const GValue *src_value,
178                             GValue       *dest_value)
179{
180  dest_value->data[0].v_pointer = g_strdup_printf ("%s",
181                                                   src_value->data[0].v_int ?
182                                                   "TRUE" : "FALSE");
183}
184static void
185value_transform_string_string (const GValue *src_value,
186                               GValue       *dest_value)
187{
188  dest_value->data[0].v_pointer = g_strdup (src_value->data[0].v_pointer);
189}
190static void
191value_transform_enum_string (const GValue *src_value,
192                             GValue       *dest_value)
193{
194  GEnumClass *class = g_type_class_ref (G_VALUE_TYPE (src_value));
195  GEnumValue *enum_value = g_enum_get_value (class, src_value->data[0].v_int);
196 
197  if (enum_value)
198    dest_value->data[0].v_pointer = g_strdup (enum_value->value_name);
199  else
200    dest_value->data[0].v_pointer = g_strdup_printf ("%d", src_value->data[0].v_int);
201 
202  g_type_class_unref (class);
203}
204static void
205value_transform_flags_string (const GValue *src_value,
206                              GValue       *dest_value)
207{
208  GFlagsClass *class = g_type_class_ref (G_VALUE_TYPE (src_value));
209  GFlagsValue *flags_value = g_flags_get_first_value (class, src_value->data[0].v_uint);
210 
211  if (flags_value)
212    {
213      GString *gstring = g_string_new (NULL);
214      guint v_flags = src_value->data[0].v_uint;
215     
216      do
217        {
218          v_flags &= ~flags_value->value;
219         
220          if (gstring->str[0])
221            g_string_append (gstring, " | ");
222          g_string_append (gstring, flags_value->value_name);
223          flags_value = g_flags_get_first_value (class, v_flags);
224        }
225      while (flags_value);
226     
227      if (v_flags)
228        dest_value->data[0].v_pointer = g_strdup_printf ("%s | %u",
229                                                         gstring->str,
230                                                         v_flags);
231      else
232        dest_value->data[0].v_pointer = g_strdup (gstring->str);
233      g_string_free (gstring, TRUE);
234    }
235  else
236    dest_value->data[0].v_pointer = g_strdup_printf ("%u", src_value->data[0].v_uint);
237 
238  g_type_class_unref (class);
239}
240
241
242/* registration
243 */
244void
245g_value_transforms_init (void)          /* sync with gtype.c */
246{
247  /* some transformations are a bit questionable,
248   * we currently skip those
249   */
250#define SKIP____register_transform_func(type1,type2,transform_func)     /* skip questionable transforms */ \
251  (void)0
252 
253  /* numeric types (plus to string) */
254  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_CHAR,            value_transform_int_int);
255  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_UCHAR,           value_transform_int_u8);
256  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_BOOLEAN,         value_transform_int_bool);
257  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_INT,             value_transform_int_int);
258  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_UINT,            value_transform_int_uint);
259  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_LONG,            value_transform_int_long);
260  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_ULONG,           value_transform_int_ulong);
261  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_INT64,           value_transform_int_int64);
262  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_UINT64,          value_transform_int_uint64);
263  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_ENUM,            value_transform_int_int);
264  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_FLAGS,           value_transform_int_uint);
265  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_FLOAT,           value_transform_int_float);
266  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_DOUBLE,          value_transform_int_double);
267  g_value_register_transform_func (G_TYPE_CHAR,         G_TYPE_STRING,          value_transform_int_string);
268  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_CHAR,            value_transform_uint_s8);
269  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UCHAR,           value_transform_uint_uint);
270  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_BOOLEAN,         value_transform_uint_bool);
271  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_INT,             value_transform_uint_int);
272  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UINT,            value_transform_uint_uint);
273  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_LONG,            value_transform_uint_long);
274  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_ULONG,           value_transform_uint_ulong);
275  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_INT64,           value_transform_uint_int64);
276  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_UINT64,          value_transform_uint_uint64);
277  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_ENUM,            value_transform_uint_int);
278  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_FLAGS,           value_transform_uint_uint);
279  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_FLOAT,           value_transform_uint_float);
280  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_DOUBLE,          value_transform_uint_double);
281  g_value_register_transform_func (G_TYPE_UCHAR,        G_TYPE_STRING,          value_transform_uint_string);
282  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_CHAR,            value_transform_int_s8);
283  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_UCHAR,           value_transform_int_u8);
284  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_BOOLEAN,         value_transform_int_int);
285  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_INT,             value_transform_int_int);
286  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_UINT,            value_transform_int_uint);
287  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_LONG,            value_transform_int_long);
288  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_ULONG,           value_transform_int_ulong);
289  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_INT64,           value_transform_int_int64);
290  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_UINT64,          value_transform_int_uint64);
291  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_ENUM,            value_transform_int_int);
292  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_FLAGS,           value_transform_int_uint);
293  SKIP____register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_FLOAT,           value_transform_int_float);
294  SKIP____register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_DOUBLE,          value_transform_int_double);
295  g_value_register_transform_func (G_TYPE_BOOLEAN,      G_TYPE_STRING,          value_transform_bool_string);
296  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_CHAR,            value_transform_int_s8);
297  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_UCHAR,           value_transform_int_u8);
298  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_BOOLEAN,         value_transform_int_bool);
299  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_INT,             value_transform_int_int);
300  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_UINT,            value_transform_int_uint);
301  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_LONG,            value_transform_int_long);
302  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_ULONG,           value_transform_int_ulong);
303  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_INT64,           value_transform_int_int64);
304  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_UINT64,          value_transform_int_uint64);
305  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_ENUM,            value_transform_int_int);
306  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_FLAGS,           value_transform_int_uint);
307  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_FLOAT,           value_transform_int_float);
308  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_DOUBLE,          value_transform_int_double);
309  g_value_register_transform_func (G_TYPE_INT,          G_TYPE_STRING,          value_transform_int_string);
310  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_CHAR,            value_transform_uint_s8);
311  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_UCHAR,           value_transform_uint_u8);
312  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_BOOLEAN,         value_transform_uint_bool);
313  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_INT,             value_transform_uint_int);
314  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_UINT,            value_transform_uint_uint);
315  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_LONG,            value_transform_uint_long);
316  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_ULONG,           value_transform_uint_ulong);
317  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_INT64,           value_transform_uint_int64);
318  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_UINT64,          value_transform_uint_uint64);
319  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_ENUM,            value_transform_uint_int);
320  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_FLAGS,           value_transform_uint_uint);
321  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_FLOAT,           value_transform_uint_float);
322  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_DOUBLE,          value_transform_uint_double);
323  g_value_register_transform_func (G_TYPE_UINT,         G_TYPE_STRING,          value_transform_uint_string);
324  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_CHAR,            value_transform_long_s8);
325  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_UCHAR,           value_transform_long_u8);
326  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_BOOLEAN,         value_transform_long_bool);
327  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_INT,             value_transform_long_int);
328  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_UINT,            value_transform_long_uint);
329  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_LONG,            value_transform_long_long);
330  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_ULONG,           value_transform_long_ulong);
331  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_INT64,           value_transform_long_int64);
332  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_UINT64,          value_transform_long_uint64);
333  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_ENUM,            value_transform_long_int);
334  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_FLAGS,           value_transform_long_uint);
335  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_FLOAT,           value_transform_long_float);
336  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_DOUBLE,          value_transform_long_double);
337  g_value_register_transform_func (G_TYPE_LONG,         G_TYPE_STRING,          value_transform_long_string);
338  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_CHAR,            value_transform_ulong_s8);
339  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_UCHAR,           value_transform_ulong_u8);
340  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_BOOLEAN,         value_transform_ulong_bool);
341  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_INT,             value_transform_ulong_int);
342  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_UINT,            value_transform_ulong_uint);
343  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_LONG,            value_transform_ulong_long);
344  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_ULONG,           value_transform_ulong_ulong);
345  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_INT64,           value_transform_ulong_int64);
346  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_UINT64,          value_transform_ulong_uint64);
347  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_ENUM,            value_transform_ulong_int);
348  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_FLAGS,           value_transform_ulong_uint);
349  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_FLOAT,           value_transform_ulong_float);
350  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_DOUBLE,          value_transform_ulong_double);
351  g_value_register_transform_func (G_TYPE_ULONG,        G_TYPE_STRING,          value_transform_ulong_string);
352  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_CHAR,            value_transform_int64_s8);
353  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_UCHAR,           value_transform_int64_u8);
354  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_BOOLEAN,         value_transform_int64_bool);
355  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_INT,             value_transform_int64_int);
356  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_UINT,            value_transform_int64_uint);
357  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_LONG,            value_transform_int64_long);
358  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_ULONG,           value_transform_int64_ulong);
359  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_INT64,           value_transform_int64_int64);
360  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_UINT64,          value_transform_int64_uint64);
361  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_ENUM,            value_transform_int64_int);
362  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_FLAGS,           value_transform_int64_uint);
363  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_FLOAT,           value_transform_int64_float);
364  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_DOUBLE,          value_transform_int64_double);
365  g_value_register_transform_func (G_TYPE_INT64,        G_TYPE_STRING,          value_transform_int64_string);
366  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_CHAR,            value_transform_uint64_s8);
367  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_UCHAR,           value_transform_uint64_u8);
368  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_BOOLEAN,         value_transform_uint64_bool);
369  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_INT,             value_transform_uint64_int);
370  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_UINT,            value_transform_uint64_uint);
371  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_LONG,            value_transform_uint64_long);
372  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_ULONG,           value_transform_uint64_ulong);
373  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_INT64,           value_transform_uint64_int64);
374  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_UINT64,          value_transform_uint64_uint64);
375  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_ENUM,            value_transform_uint64_int);
376  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_FLAGS,           value_transform_uint64_uint);
377#ifndef _MSC_VER
378  /* required casts unsupported with msvc 5.0 */
379  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_FLOAT,           value_transform_uint64_float);
380  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_DOUBLE,          value_transform_uint64_double);
381#endif
382  g_value_register_transform_func (G_TYPE_UINT64,       G_TYPE_STRING,          value_transform_uint64_string);
383  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_CHAR,            value_transform_int_s8);
384  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_UCHAR,           value_transform_int_u8);
385  SKIP____register_transform_func (G_TYPE_ENUM,         G_TYPE_BOOLEAN,         value_transform_int_bool);
386  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_INT,             value_transform_int_int);
387  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_UINT,            value_transform_int_uint);
388  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_LONG,            value_transform_int_long);
389  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_ULONG,           value_transform_int_ulong);
390  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_INT64,           value_transform_int_int64);
391  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_UINT64,          value_transform_int_uint64);
392  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_ENUM,            value_transform_int_int);
393  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_FLAGS,           value_transform_int_uint);
394  SKIP____register_transform_func (G_TYPE_ENUM,         G_TYPE_FLOAT,           value_transform_int_float);
395  SKIP____register_transform_func (G_TYPE_ENUM,         G_TYPE_DOUBLE,          value_transform_int_double);
396  g_value_register_transform_func (G_TYPE_ENUM,         G_TYPE_STRING,          value_transform_enum_string);
397  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_CHAR,            value_transform_uint_s8);
398  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_UCHAR,           value_transform_uint_u8);
399  SKIP____register_transform_func (G_TYPE_FLAGS,        G_TYPE_BOOLEAN,         value_transform_uint_bool);
400  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_INT,             value_transform_uint_int);
401  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_UINT,            value_transform_uint_uint);
402  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_LONG,            value_transform_uint_long);
403  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_ULONG,           value_transform_uint_ulong);
404  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_INT64,           value_transform_uint_int64);
405  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_UINT64,          value_transform_uint_uint64);
406  SKIP____register_transform_func (G_TYPE_FLAGS,        G_TYPE_ENUM,            value_transform_uint_int);
407  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_FLAGS,           value_transform_uint_uint);
408  SKIP____register_transform_func (G_TYPE_FLAGS,        G_TYPE_FLOAT,           value_transform_uint_float);
409  SKIP____register_transform_func (G_TYPE_FLAGS,        G_TYPE_DOUBLE,          value_transform_uint_double);
410  g_value_register_transform_func (G_TYPE_FLAGS,        G_TYPE_STRING,          value_transform_flags_string);
411  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_CHAR,            value_transform_float_s8);
412  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_UCHAR,           value_transform_float_u8);
413  SKIP____register_transform_func (G_TYPE_FLOAT,        G_TYPE_BOOLEAN,         value_transform_float_bool);
414  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_INT,             value_transform_float_int);
415  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_UINT,            value_transform_float_uint);
416  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_LONG,            value_transform_float_long);
417  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_ULONG,           value_transform_float_ulong);
418  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_INT64,           value_transform_float_int64);
419  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_UINT64,          value_transform_float_uint64);
420  SKIP____register_transform_func (G_TYPE_FLOAT,        G_TYPE_ENUM,            value_transform_float_int);
421  SKIP____register_transform_func (G_TYPE_FLOAT,        G_TYPE_FLAGS,           value_transform_float_uint);
422  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_FLOAT,           value_transform_float_float);
423  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_DOUBLE,          value_transform_float_double);
424  g_value_register_transform_func (G_TYPE_FLOAT,        G_TYPE_STRING,          value_transform_float_string);
425  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_CHAR,            value_transform_double_s8);
426  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_UCHAR,           value_transform_double_u8);
427  SKIP____register_transform_func (G_TYPE_DOUBLE,       G_TYPE_BOOLEAN,         value_transform_double_bool);
428  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_INT,             value_transform_double_int);
429  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_UINT,            value_transform_double_uint);
430  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_LONG,            value_transform_double_long);
431  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_ULONG,           value_transform_double_ulong);
432  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_INT64,           value_transform_double_int64);
433  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_UINT64,          value_transform_double_uint64);
434  SKIP____register_transform_func (G_TYPE_DOUBLE,       G_TYPE_ENUM,            value_transform_double_int);
435  SKIP____register_transform_func (G_TYPE_DOUBLE,       G_TYPE_FLAGS,           value_transform_double_uint);
436  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_FLOAT,           value_transform_double_float);
437  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_DOUBLE,          value_transform_double_double);
438  g_value_register_transform_func (G_TYPE_DOUBLE,       G_TYPE_STRING,          value_transform_double_string);
439  /* string types */
440  g_value_register_transform_func (G_TYPE_STRING,       G_TYPE_STRING,          value_transform_string_string);
441}
Note: See TracBrowser for help on using the repository browser.