[PATCH] add gvaluetransform support for (u)int64



The attached patch adds value transform support to glib for the (u)int64
data type. The only potentially controversial conversion,
(u)int64_string, was made easy because of the existing format string
checks in the configure system.

Please copy me if you have any concerns.

Regards,

Andy Wingo

ps. I forgot to actually attach the patch on my last email, also when i
wasn't subscribed. If the list owner doesn't bounce that please ignore,
thanks :-)
? glib.patch
? gobject/glib.patch
Index: gobject/gvaluetransform.c
===================================================================
RCS file: /cvs/gnome/glib/gobject/gvaluetransform.c,v
retrieving revision 1.2
diff -u -r1.2 gvaluetransform.c
--- gobject/gvaluetransform.c	2001/03/08 21:34:53	1.2
+++ gobject/gvaluetransform.c	2002/02/07 00:38:12
@@ -20,8 +20,8 @@
 
 #include	"gvalue.h"
 #include	"genums.h"
+#include	"glibconfig.h" /* G_G[U]INT64_FORMAT */
 
-
 /* same type transforms
  */
 static void
@@ -34,6 +34,10 @@
 #define	value_transform_uint_uint	value_transform_memcpy_data0
 #define	value_transform_long_long	value_transform_memcpy_data0
 #define	value_transform_ulong_ulong	value_transform_memcpy_data0
+#define	value_transform_int64_int64	value_transform_memcpy_data0
+#define	value_transform_uint64_uint64	value_transform_memcpy_data0
+#define	value_transform_int64_int64	value_transform_memcpy_data0
+#define	value_transform_uint64_uint64	value_transform_memcpy_data0
 #define	value_transform_float_float	value_transform_memcpy_data0
 #define	value_transform_double_double	value_transform_memcpy_data0
 
@@ -53,6 +57,8 @@
 DEFINE_CAST (int_uint,		v_int,    guint,   v_uint);
 DEFINE_CAST (int_long,		v_int,    glong,   v_long);
 DEFINE_CAST (int_ulong,		v_int,    gulong,  v_ulong);
+DEFINE_CAST (int_int64,		v_int,    gint64,  v_int64);
+DEFINE_CAST (int_uint64,	v_int,    guint64, v_uint64);
 DEFINE_CAST (int_float,		v_int,    gfloat,  v_float);
 DEFINE_CAST (int_double,	v_int,    gdouble, v_double);
 DEFINE_CAST (uint_s8,		v_uint,   gint8,   v_int);
@@ -60,6 +66,8 @@
 DEFINE_CAST (uint_int,		v_uint,   gint,    v_int);
 DEFINE_CAST (uint_long,		v_uint,   glong,   v_long);
 DEFINE_CAST (uint_ulong,	v_uint,   gulong,  v_ulong);
+DEFINE_CAST (uint_int64,	v_uint,   gint64,  v_int64);
+DEFINE_CAST (uint_uint64,	v_uint,   guint64, v_uint64);
 DEFINE_CAST (uint_float,	v_uint,   gfloat,  v_float);
 DEFINE_CAST (uint_double,	v_uint,   gdouble, v_double);
 DEFINE_CAST (long_s8,		v_long,   gint8,   v_int);
@@ -67,21 +75,45 @@
 DEFINE_CAST (long_int,		v_long,   gint,    v_int);
 DEFINE_CAST (long_uint,		v_long,   guint,   v_uint);
 DEFINE_CAST (long_ulong,	v_long,   gulong,  v_ulong);
+DEFINE_CAST (long_int64,	v_long,   gint64,  v_int64);
+DEFINE_CAST (long_uint64,	v_long,   guint64, v_uint64);
 DEFINE_CAST (long_float,	v_long,   gfloat,  v_float);
 DEFINE_CAST (long_double,	v_long,   gdouble, v_double);
 DEFINE_CAST (ulong_s8,		v_ulong,  gint8,   v_int);
 DEFINE_CAST (ulong_u8,		v_ulong,  guint8,  v_uint);
 DEFINE_CAST (ulong_int,		v_ulong,  gint,    v_int);
 DEFINE_CAST (ulong_uint,	v_ulong,  guint,   v_uint);
+DEFINE_CAST (ulong_int64,	v_ulong,  gint64,  v_int64);
+DEFINE_CAST (ulong_uint64,	v_ulong,  guint64, v_uint64);
 DEFINE_CAST (ulong_long,	v_ulong,  glong,   v_long);
 DEFINE_CAST (ulong_float,	v_ulong,  gfloat,  v_float);
 DEFINE_CAST (ulong_double,	v_ulong,  gdouble, v_double);
+DEFINE_CAST (int64_s8,		v_int64,  gint8,   v_int);
+DEFINE_CAST (int64_u8,		v_int64,  guint8,  v_uint);
+DEFINE_CAST (int64_int,		v_int64,  gint,    v_int);
+DEFINE_CAST (int64_uint,	v_int64,  guint,   v_uint);
+DEFINE_CAST (int64_long,	v_int64,  glong,   v_long);
+DEFINE_CAST (int64_uint64,	v_int64,  guint64, v_uint64);
+DEFINE_CAST (int64_ulong,	v_int64,  gulong,  v_ulong);
+DEFINE_CAST (int64_float,	v_int64,  gfloat,  v_float);
+DEFINE_CAST (int64_double,	v_int64,  gdouble, v_double);
+DEFINE_CAST (uint64_s8,		v_uint64, gint8,   v_int);
+DEFINE_CAST (uint64_u8,		v_uint64, guint8,  v_uint);
+DEFINE_CAST (uint64_int,	v_uint64, gint,    v_int);
+DEFINE_CAST (uint64_uint,	v_uint64, guint,   v_uint);
+DEFINE_CAST (uint64_long,	v_uint64, glong,   v_long);
+DEFINE_CAST (uint64_ulong,	v_uint64, gulong,  v_ulong);
+DEFINE_CAST (uint64_int64,	v_uint64, gint64,  v_int64);
+DEFINE_CAST (uint64_float,	v_uint64, gfloat,  v_float);
+DEFINE_CAST (uint64_double,	v_uint64, gdouble, v_double);
 DEFINE_CAST (float_s8,		v_float,  gint8,   v_int);
 DEFINE_CAST (float_u8,		v_float,  guint8,  v_uint);
 DEFINE_CAST (float_int,		v_float,  gint,    v_int);
 DEFINE_CAST (float_uint,	v_float,  guint,   v_uint);
 DEFINE_CAST (float_long,	v_float,  glong,   v_long);
 DEFINE_CAST (float_ulong,	v_float,  gulong,  v_ulong);
+DEFINE_CAST (float_int64,	v_float,  gint64,  v_int64);
+DEFINE_CAST (float_uint64,	v_float,  guint64, v_uint64);
 DEFINE_CAST (float_double,	v_float,  gdouble, v_double);
 DEFINE_CAST (double_s8,		v_double, gint8,   v_int);
 DEFINE_CAST (double_u8,		v_double, guint8,  v_uint);
@@ -89,6 +121,8 @@
 DEFINE_CAST (double_uint,	v_double, guint,   v_uint);
 DEFINE_CAST (double_long,	v_double, glong,   v_long);
 DEFINE_CAST (double_ulong,	v_double, gulong,  v_ulong);
+DEFINE_CAST (double_int64,	v_double, gint64,  v_int64);
+DEFINE_CAST (double_uint64,	v_double, guint64, v_uint64);
 DEFINE_CAST (double_float,	v_double, gfloat,  v_float);
 
 
@@ -105,6 +139,8 @@
 DEFINE_BOOL_CHECK (uint_bool,	v_uint);
 DEFINE_BOOL_CHECK (long_bool,	v_long);
 DEFINE_BOOL_CHECK (ulong_bool,	v_uint);
+DEFINE_BOOL_CHECK (int64_bool,	v_int64);
+DEFINE_BOOL_CHECK (uint64_bool,	v_uint64);
 
 
 /* string printouts
@@ -121,6 +157,8 @@
 DEFINE_SPRINTF (uint_string,	v_uint,	  "%u");
 DEFINE_SPRINTF (long_string,	v_long,	  "%ld");
 DEFINE_SPRINTF (ulong_string,	v_ulong,  "%lu");
+DEFINE_SPRINTF (int64_string,	v_int64,  "%" G_GINT64_FORMAT);
+DEFINE_SPRINTF (uint64_string,	v_uint64, "%" G_GUINT64_FORMAT);
 DEFINE_SPRINTF (float_string,	v_float,  "%f");
 DEFINE_SPRINTF (double_string,	v_double, "%f");
 
@@ -211,6 +249,8 @@
   g_value_register_transform_func (G_TYPE_CHAR,		G_TYPE_UINT,		value_transform_int_uint);
   g_value_register_transform_func (G_TYPE_CHAR,		G_TYPE_LONG,		value_transform_int_long);
   g_value_register_transform_func (G_TYPE_CHAR,		G_TYPE_ULONG,		value_transform_int_ulong);
+  g_value_register_transform_func (G_TYPE_CHAR,		G_TYPE_INT64,		value_transform_int_int64);
+  g_value_register_transform_func (G_TYPE_CHAR,		G_TYPE_UINT64,		value_transform_int_uint64);
   g_value_register_transform_func (G_TYPE_CHAR,		G_TYPE_ENUM,		value_transform_int_int);
   g_value_register_transform_func (G_TYPE_CHAR,		G_TYPE_FLAGS,		value_transform_int_uint);
   g_value_register_transform_func (G_TYPE_CHAR,		G_TYPE_FLOAT,		value_transform_int_float);
@@ -223,6 +263,8 @@
   g_value_register_transform_func (G_TYPE_UCHAR,	G_TYPE_UINT,		value_transform_uint_uint);
   g_value_register_transform_func (G_TYPE_UCHAR,	G_TYPE_LONG,		value_transform_uint_long);
   g_value_register_transform_func (G_TYPE_UCHAR,	G_TYPE_ULONG,		value_transform_uint_ulong);
+  g_value_register_transform_func (G_TYPE_UCHAR,	G_TYPE_INT64,		value_transform_uint_int64);
+  g_value_register_transform_func (G_TYPE_UCHAR,	G_TYPE_UINT64,		value_transform_uint_uint64);
   g_value_register_transform_func (G_TYPE_UCHAR,	G_TYPE_ENUM,		value_transform_uint_int);
   g_value_register_transform_func (G_TYPE_UCHAR,	G_TYPE_FLAGS,		value_transform_uint_uint);
   g_value_register_transform_func (G_TYPE_UCHAR,	G_TYPE_FLOAT,		value_transform_uint_float);
@@ -235,6 +277,8 @@
   g_value_register_transform_func (G_TYPE_BOOLEAN,	G_TYPE_UINT,		value_transform_int_uint);
   g_value_register_transform_func (G_TYPE_BOOLEAN,	G_TYPE_LONG,		value_transform_int_long);
   g_value_register_transform_func (G_TYPE_BOOLEAN,	G_TYPE_ULONG,		value_transform_int_ulong);
+  g_value_register_transform_func (G_TYPE_BOOLEAN,	G_TYPE_INT64,		value_transform_int_int64);
+  g_value_register_transform_func (G_TYPE_BOOLEAN,	G_TYPE_UINT64,		value_transform_int_uint64);
   g_value_register_transform_func (G_TYPE_BOOLEAN,	G_TYPE_ENUM,		value_transform_int_int);
   g_value_register_transform_func (G_TYPE_BOOLEAN,	G_TYPE_FLAGS,		value_transform_int_uint);
   SKIP____register_transform_func (G_TYPE_BOOLEAN,	G_TYPE_FLOAT,		value_transform_int_float);
@@ -247,6 +291,8 @@
   g_value_register_transform_func (G_TYPE_INT,		G_TYPE_UINT,		value_transform_int_uint);
   g_value_register_transform_func (G_TYPE_INT,		G_TYPE_LONG,		value_transform_int_long);
   g_value_register_transform_func (G_TYPE_INT,		G_TYPE_ULONG,		value_transform_int_ulong);
+  g_value_register_transform_func (G_TYPE_INT,		G_TYPE_INT64,		value_transform_int_int64);
+  g_value_register_transform_func (G_TYPE_INT,		G_TYPE_UINT64,		value_transform_int_uint64);
   g_value_register_transform_func (G_TYPE_INT,		G_TYPE_ENUM,		value_transform_int_int);
   g_value_register_transform_func (G_TYPE_INT,		G_TYPE_FLAGS,		value_transform_int_uint);
   g_value_register_transform_func (G_TYPE_INT,		G_TYPE_FLOAT,		value_transform_int_float);
@@ -259,6 +305,8 @@
   g_value_register_transform_func (G_TYPE_UINT,		G_TYPE_UINT,		value_transform_uint_uint);
   g_value_register_transform_func (G_TYPE_UINT,		G_TYPE_LONG,		value_transform_uint_long);
   g_value_register_transform_func (G_TYPE_UINT,		G_TYPE_ULONG,		value_transform_uint_ulong);
+  g_value_register_transform_func (G_TYPE_UINT,		G_TYPE_INT64,		value_transform_uint_int64);
+  g_value_register_transform_func (G_TYPE_UINT,		G_TYPE_UINT64,		value_transform_uint_uint64);
   g_value_register_transform_func (G_TYPE_UINT,		G_TYPE_ENUM,		value_transform_uint_int);
   g_value_register_transform_func (G_TYPE_UINT,		G_TYPE_FLAGS,		value_transform_uint_uint);
   g_value_register_transform_func (G_TYPE_UINT,		G_TYPE_FLOAT,		value_transform_uint_float);
@@ -271,6 +319,8 @@
   g_value_register_transform_func (G_TYPE_LONG,		G_TYPE_UINT,		value_transform_long_uint);
   g_value_register_transform_func (G_TYPE_LONG,		G_TYPE_LONG,		value_transform_long_long);
   g_value_register_transform_func (G_TYPE_LONG,		G_TYPE_ULONG,		value_transform_long_ulong);
+  g_value_register_transform_func (G_TYPE_LONG,		G_TYPE_INT64,		value_transform_long_int64);
+  g_value_register_transform_func (G_TYPE_LONG,		G_TYPE_UINT64,		value_transform_long_uint64);
   g_value_register_transform_func (G_TYPE_LONG,		G_TYPE_ENUM,		value_transform_long_int);
   g_value_register_transform_func (G_TYPE_LONG,		G_TYPE_FLAGS,		value_transform_long_uint);
   g_value_register_transform_func (G_TYPE_LONG,		G_TYPE_FLOAT,		value_transform_long_float);
@@ -283,11 +333,41 @@
   g_value_register_transform_func (G_TYPE_ULONG,	G_TYPE_UINT,		value_transform_ulong_uint);
   g_value_register_transform_func (G_TYPE_ULONG,	G_TYPE_LONG,		value_transform_ulong_long);
   g_value_register_transform_func (G_TYPE_ULONG,	G_TYPE_ULONG,		value_transform_ulong_ulong);
+  g_value_register_transform_func (G_TYPE_ULONG,	G_TYPE_INT64,		value_transform_ulong_int64);
+  g_value_register_transform_func (G_TYPE_ULONG,	G_TYPE_UINT64,		value_transform_ulong_uint64);
   g_value_register_transform_func (G_TYPE_ULONG,	G_TYPE_ENUM,		value_transform_ulong_int);
   g_value_register_transform_func (G_TYPE_ULONG,	G_TYPE_FLAGS,		value_transform_ulong_uint);
   g_value_register_transform_func (G_TYPE_ULONG,	G_TYPE_FLOAT,		value_transform_ulong_float);
   g_value_register_transform_func (G_TYPE_ULONG,	G_TYPE_DOUBLE,		value_transform_ulong_double);
   g_value_register_transform_func (G_TYPE_ULONG,	G_TYPE_STRING,		value_transform_ulong_string);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_CHAR,		value_transform_int64_s8);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_UCHAR,		value_transform_int64_u8);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_BOOLEAN,		value_transform_int64_bool);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_INT,		value_transform_int64_int);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_UINT,		value_transform_int64_uint);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_LONG,		value_transform_int64_long);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_ULONG,		value_transform_int64_ulong);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_INT64,		value_transform_int64_int64);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_UINT64,		value_transform_int64_uint64);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_ENUM,		value_transform_int64_int);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_FLAGS,		value_transform_int64_uint);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_FLOAT,		value_transform_int64_float);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_DOUBLE,		value_transform_int64_double);
+  g_value_register_transform_func (G_TYPE_INT64,	G_TYPE_STRING,		value_transform_int64_string);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_CHAR,		value_transform_uint64_s8);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_UCHAR,		value_transform_uint64_u8);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_BOOLEAN,		value_transform_uint64_bool);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_INT,		value_transform_uint64_int);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_UINT,		value_transform_uint64_uint);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_LONG,		value_transform_uint64_long);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_ULONG,		value_transform_uint64_ulong);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_INT64,		value_transform_uint64_int64);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_UINT64,		value_transform_uint64_uint64);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_ENUM,		value_transform_uint64_int);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_FLAGS,		value_transform_uint64_uint);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_FLOAT,		value_transform_uint64_float);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_DOUBLE,		value_transform_uint64_double);
+  g_value_register_transform_func (G_TYPE_UINT64,	G_TYPE_STRING,		value_transform_uint64_string);
   g_value_register_transform_func (G_TYPE_ENUM,		G_TYPE_CHAR,		value_transform_int_s8);
   g_value_register_transform_func (G_TYPE_ENUM,		G_TYPE_UCHAR,		value_transform_int_u8);
   SKIP____register_transform_func (G_TYPE_ENUM,		G_TYPE_BOOLEAN,		value_transform_int_bool);
@@ -295,6 +375,8 @@
   g_value_register_transform_func (G_TYPE_ENUM,		G_TYPE_UINT,		value_transform_int_uint);
   g_value_register_transform_func (G_TYPE_ENUM,		G_TYPE_LONG,		value_transform_int_long);
   g_value_register_transform_func (G_TYPE_ENUM,		G_TYPE_ULONG,		value_transform_int_ulong);
+  g_value_register_transform_func (G_TYPE_ENUM,		G_TYPE_INT64,		value_transform_int_int64);
+  g_value_register_transform_func (G_TYPE_ENUM,		G_TYPE_UINT64,		value_transform_int_uint64);
   g_value_register_transform_func (G_TYPE_ENUM,		G_TYPE_ENUM,		value_transform_int_int);
   g_value_register_transform_func (G_TYPE_ENUM,		G_TYPE_FLAGS,		value_transform_int_uint);
   SKIP____register_transform_func (G_TYPE_ENUM,		G_TYPE_FLOAT,		value_transform_int_float);
@@ -307,6 +389,8 @@
   g_value_register_transform_func (G_TYPE_FLAGS,	G_TYPE_UINT,		value_transform_uint_uint);
   g_value_register_transform_func (G_TYPE_FLAGS,	G_TYPE_LONG,		value_transform_uint_long);
   g_value_register_transform_func (G_TYPE_FLAGS,	G_TYPE_ULONG,		value_transform_uint_ulong);
+  g_value_register_transform_func (G_TYPE_FLAGS,	G_TYPE_INT64,		value_transform_uint_int64);
+  g_value_register_transform_func (G_TYPE_FLAGS,	G_TYPE_UINT64,		value_transform_uint_uint64);
   SKIP____register_transform_func (G_TYPE_FLAGS,	G_TYPE_ENUM,		value_transform_uint_int);
   g_value_register_transform_func (G_TYPE_FLAGS,	G_TYPE_FLAGS,		value_transform_uint_uint);
   SKIP____register_transform_func (G_TYPE_FLAGS,	G_TYPE_FLOAT,		value_transform_uint_float);
@@ -319,6 +403,8 @@
   g_value_register_transform_func (G_TYPE_FLOAT,	G_TYPE_UINT,		value_transform_float_uint);
   g_value_register_transform_func (G_TYPE_FLOAT,	G_TYPE_LONG,		value_transform_float_long);
   g_value_register_transform_func (G_TYPE_FLOAT,	G_TYPE_ULONG,		value_transform_float_ulong);
+  g_value_register_transform_func (G_TYPE_FLOAT,	G_TYPE_INT64,		value_transform_float_int64);
+  g_value_register_transform_func (G_TYPE_FLOAT,	G_TYPE_UINT64,		value_transform_float_uint64);
   SKIP____register_transform_func (G_TYPE_FLOAT,	G_TYPE_ENUM,		value_transform_float_int);
   SKIP____register_transform_func (G_TYPE_FLOAT,	G_TYPE_FLAGS,		value_transform_float_uint);
   g_value_register_transform_func (G_TYPE_FLOAT,	G_TYPE_FLOAT,		value_transform_float_float);
@@ -331,6 +417,8 @@
   g_value_register_transform_func (G_TYPE_DOUBLE,	G_TYPE_UINT,		value_transform_double_uint);
   g_value_register_transform_func (G_TYPE_DOUBLE,	G_TYPE_LONG,		value_transform_double_long);
   g_value_register_transform_func (G_TYPE_DOUBLE,	G_TYPE_ULONG,		value_transform_double_ulong);
+  g_value_register_transform_func (G_TYPE_DOUBLE,	G_TYPE_INT64,		value_transform_double_int64);
+  g_value_register_transform_func (G_TYPE_DOUBLE,	G_TYPE_UINT64,		value_transform_double_uint64);
   SKIP____register_transform_func (G_TYPE_DOUBLE,	G_TYPE_ENUM,		value_transform_double_int);
   SKIP____register_transform_func (G_TYPE_DOUBLE,	G_TYPE_FLAGS,		value_transform_double_uint);
   g_value_register_transform_func (G_TYPE_DOUBLE,	G_TYPE_FLOAT,		value_transform_double_float);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]