[gnome-db] Re: [PATCH] gda-value.c



On Wed, 2005-11-23 at 18:58 +0000, Bob Ham wrote:

> This fixes a few bugs and compilation warnings in gda-value.c.

And also includes some debugging printf's.. oops :)  I've removed them
from the attached version of the patch.

-- 
Bob Ham <rah bash sh>
Index: gda-value.c
===================================================================
RCS file: /cvs/gnome/libgda/libgda/gda-value.c,v
retrieving revision 1.76
diff -u -u -p -r1.76 gda-value.c
--- gda-value.c	7 Oct 2005 13:15:12 -0000	1.76
+++ gda-value.c	23 Nov 2005 18:55:34 -0000
@@ -125,7 +125,7 @@ set_from_string (GdaValue *value, const 
 		break;
 
 	case GDA_VALUE_TYPE_BINARY:
-		binary.data = as_string;
+		binary.data = (gchar *) as_string;
 		binary.binary_length = strlen (as_string);
 		gda_value_set_binary (value, &binary);
 		break;
@@ -1021,8 +1021,8 @@ gda_timestamp_copy (gpointer boxed)
 	copy->month = src->month;
 	copy->day = src->day;
 	copy->hour = src->hour;
-	copy->minute = src->hour;
-	copy->second = src->hour;
+	copy->minute = src->minute;
+	copy->second = src->second;
 	copy->fraction = src->fraction;
 	copy->timezone = src->timezone;
 	
@@ -1053,16 +1053,23 @@ gda_value_new_timestamp_from_timet (time
 	value = g_new0 (GdaValue, 1);
 	ltm = localtime ((const time_t *) &val);
 	if (ltm) {
 		GdaTimestamp tstamp;
-		tstamp.year = ltm->tm_year;
-		tstamp.month = ltm->tm_mon;
+		tstamp.year = 1900 + ltm->tm_year;
+		tstamp.month = ltm->tm_mon + 1;
 		tstamp.day = ltm->tm_mday;
 		tstamp.hour = ltm->tm_hour;
 		tstamp.minute = ltm->tm_min;
 		tstamp.second = ltm->tm_sec;
 		tstamp.fraction = 0;
 		tstamp.timezone = 0; /* FIXME */
 		gda_value_set_timestamp (value, (const GdaTimestamp *) &tstamp);
+		{
+		  const GdaTimestamp * t;
+		  t = gda_value_get_timestamp (value);
+		}
 	}
 
 	return value;
@@ -1269,12 +1276,15 @@ gda_value_is_number (GdaValue *value)
 	type = GDA_VALUE_TYPE(value);
 	switch (type) {
 	case GDA_VALUE_TYPE_BIGINT:
+	case GDA_VALUE_TYPE_BIGUINT:
 	case GDA_VALUE_TYPE_DOUBLE:
 	case GDA_VALUE_TYPE_INTEGER:
+	case GDA_VALUE_TYPE_UINTEGER:
 	case GDA_VALUE_TYPE_MONEY:
 	case GDA_VALUE_TYPE_NUMERIC:
 	case GDA_VALUE_TYPE_SINGLE:
 	case GDA_VALUE_TYPE_SMALLINT:
+	case GDA_VALUE_TYPE_SMALLUINT:
 	case GDA_VALUE_TYPE_TINYINT:
 	case GDA_VALUE_TYPE_TINYUINT:
 		return TRUE;
@@ -1285,6 +1295,7 @@ gda_value_is_number (GdaValue *value)
     }
 }
 
+
 /**
  * gda_value_copy
  * @value: value to get a copy from.
@@ -1440,13 +1451,9 @@ gda_value_set_blob (GdaValue *value, con
 	g_return_if_fail (value);
 	g_return_if_fail (GDA_IS_BLOB (val));
 	
-	GdaBlob *blob;
 	l_g_value_unset (value);
 	g_value_init (value, G_VALUE_TYPE_BLOB);
-	
-	blob = g_object_ref (val);
-		
-	g_value_set_object (value, blob);
+	g_value_take_object (value, (gpointer) val);
 }
 
 /**
@@ -2245,7 +2252,7 @@ gda_value_stringify (GdaValue *value)
 	
 	case GDA_VALUE_TYPE_BLOB:
 		gdablob = gda_value_get_blob (value);
-		retval = g_strdup_printf ("%s", gda_blob_get_sql_id (gdablob));
+		retval = g_strdup_printf ("%s", gda_blob_get_sql_id ((GdaBlob *) gdablob));
 		break;
 
 	case GDA_VALUE_TYPE_LIST:
@@ -2338,8 +2345,8 @@ gda_value_compare (GdaValue *value1, Gda
 
 	case GDA_VALUE_TYPE_BINARY:
 	{
-		GdaBinary *binary1 = gda_value_get_binary (value1);
-		GdaBinary *binary2 = gda_value_get_binary (value2);
+		GdaBinary *binary1 = (GdaBinary *) gda_value_get_binary (value1);
+		const GdaBinary *binary2 = gda_value_get_binary (value2);
 		if(binary1 && binary2 && (binary1->binary_length == binary2->binary_length))
 		    retval = memcmp (binary1->data, binary2->data, binary1->binary_length) ;
 		else
@@ -2406,7 +2413,7 @@ gda_value_compare (GdaValue *value1, Gda
 
 	case GDA_VALUE_TYPE_MONEY:
 	{
-		GdaMoney *money1, *money2;
+		const GdaMoney *money1, *money2;
 		money1 = gda_value_get_money(value1);
 		money2 = gda_value_get_money(value2);
 		if (!strcmp (money1->currency ? money2->currency : "",
@@ -2420,7 +2427,7 @@ gda_value_compare (GdaValue *value1, Gda
 
 	case GDA_VALUE_TYPE_NUMERIC:
 	{
-		GdaNumeric *num1, *num2;
+		const GdaNumeric *num1, *num2;
 		num1= gda_value_get_numeric (value1);
 		num2 = gda_value_get_numeric (value2);
                 if (num1) {
@@ -2452,7 +2459,7 @@ gda_value_compare (GdaValue *value1, Gda
 
 	case GDA_VALUE_TYPE_STRING:
 	{
-		gchar *str1, *str2;
+		const gchar *str1, *str2;
 		str1 = gda_value_get_string (value1);
 		str2 = gda_value_get_string (value2);
 		if (str1 && str2)

Attachment: signature.asc
Description: This is a digitally signed message part



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