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