diff options
author | Francisco Figueiredo Jr. <fxjr@mono-cvs.ximian.com> | 2005-07-20 06:07:09 +0400 |
---|---|---|
committer | Francisco Figueiredo Jr. <fxjr@mono-cvs.ximian.com> | 2005-07-20 06:07:09 +0400 |
commit | 54da959ccce7642f7af44b220b4bd240ee6aa30a (patch) | |
tree | c5c7eac2beb4a59cc8e6aa1445548bebf187ce75 /mcs/class/Npgsql | |
parent | 5c4dd971aebfe949a3ee6b6c67d5e2431f5d3c0d (diff) |
2005-07-19 Francisco Figueiredo Jr. <fxjrlists@yahoo.com.br>
* NpgsqlTypes/NpgsqlTypeConverters.cs: Gborg 1370. Fixed problems with Money type when using a culture which doesn't use dot as decimal separator. Also fixed problem where only Decimal types (i.e.: 7.4M) could be used as Money type values. Now Float values can be used too.
svn path=/trunk/mcs/; revision=47456
Diffstat (limited to 'mcs/class/Npgsql')
-rw-r--r-- | mcs/class/Npgsql/NpgsqlTypes/NpgsqlTypeConverters.cs | 64 |
1 files changed, 54 insertions, 10 deletions
diff --git a/mcs/class/Npgsql/NpgsqlTypes/NpgsqlTypeConverters.cs b/mcs/class/Npgsql/NpgsqlTypes/NpgsqlTypeConverters.cs index fa4a40fbd3c..50d53d7d8be 100644 --- a/mcs/class/Npgsql/NpgsqlTypes/NpgsqlTypeConverters.cs +++ b/mcs/class/Npgsql/NpgsqlTypes/NpgsqlTypeConverters.cs @@ -181,6 +181,7 @@ namespace NpgsqlTypes // It's a number with a $ on the beginning... return Convert.ToDecimal(BackendData.Substring(1, BackendData.Length - 1), CultureInfo.InvariantCulture); } + } /// <summary> @@ -247,8 +248,10 @@ namespace NpgsqlTypes /// </summary> internal static String ToMoney(NpgsqlNativeTypeInfo TypeInfo, Object NativeData) { - return "$" + ((Decimal)NativeData).ToString(DateTimeFormatInfo.InvariantInfo); + return "$" + ((IFormattable)NativeData).ToString(null, CultureInfo.InvariantCulture.NumberFormat); } + + } @@ -273,7 +276,11 @@ namespace NpgsqlTypes Match m = pointRegex.Match(BackendData); - return new NpgsqlPoint(Single.Parse(m.Groups[1].ToString()), Single.Parse(m.Groups[2].ToString())); + return new NpgsqlPoint( + Single.Parse(m.Groups[1].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat), + Single.Parse(m.Groups[2].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat)); @@ -287,8 +294,17 @@ namespace NpgsqlTypes Match m = boxlsegRegex.Match(BackendData); - return new NpgsqlBox(new NpgsqlPoint(Single.Parse(m.Groups[1].ToString()), Single.Parse(m.Groups[2].ToString())), - new NpgsqlPoint(Single.Parse(m.Groups[3].ToString()), Single.Parse(m.Groups[4].ToString()))); + return new NpgsqlBox( + new NpgsqlPoint( + Single.Parse(m.Groups[1].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat), + Single.Parse(m.Groups[2].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat)), + new NpgsqlPoint( + Single.Parse(m.Groups[3].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat), + Single.Parse(m.Groups[4].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat))); } /// <summary> @@ -298,8 +314,17 @@ namespace NpgsqlTypes { Match m = boxlsegRegex.Match(BackendData); - return new NpgsqlLSeg(new NpgsqlPoint(Single.Parse(m.Groups[1].ToString()), Single.Parse(m.Groups[2].ToString())), - new NpgsqlPoint(Single.Parse(m.Groups[3].ToString()), Single.Parse(m.Groups[4].ToString()))); + return new NpgsqlLSeg( + new NpgsqlPoint( + Single.Parse(m.Groups[1].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat), + Single.Parse(m.Groups[2].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat)), + new NpgsqlPoint( + Single.Parse(m.Groups[3].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat), + Single.Parse(m.Groups[4].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat))); } /// <summary> @@ -316,7 +341,11 @@ namespace NpgsqlTypes { if (open) - points.Add(new NpgsqlPoint(Single.Parse(m.Groups[1].ToString()), Single.Parse(m.Groups[2].ToString()))); + points.Add(new NpgsqlPoint( + Single.Parse(m.Groups[1].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat), + Single.Parse(m.Groups[2].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat))); else { // Here we have to do a little hack, because as of 2004-08-11 mono cvs version, the last group is returned with @@ -329,7 +358,11 @@ namespace NpgsqlTypes if (group2.EndsWith(")")) group2 = group2.Remove(group2.Length - 1, 1); - points.Add(new NpgsqlPoint(Single.Parse(m.Groups[1].ToString()), Single.Parse(group2))); + points.Add(new NpgsqlPoint( + Single.Parse(m.Groups[1].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat), + Single.Parse(group2, NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat))); } m = m.NextMatch(); @@ -365,7 +398,11 @@ namespace NpgsqlTypes if (group2.EndsWith(")")) group2 = group2.Remove(group2.Length - 1, 1); - points.Add(new NpgsqlPoint(Single.Parse(m.Groups[1].ToString()), Single.Parse(group2))); + points.Add(new NpgsqlPoint( + Single.Parse(m.Groups[1].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat), + Single.Parse(group2, NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat))); m = m.NextMatch(); @@ -382,7 +419,14 @@ namespace NpgsqlTypes internal static Object ToCircle(NpgsqlBackendTypeInfo TypeInfo, String BackendData, Int16 TypeSize, Int32 TypeModifier) { Match m = circleRegex.Match(BackendData); - return new NpgsqlCircle(new NpgsqlPoint(Single.Parse(m.Groups[1].ToString()), Single.Parse(m.Groups[2].ToString())), Single.Parse(m.Groups[3].ToString())); + return new NpgsqlCircle( + new NpgsqlPoint( + Single.Parse(m.Groups[1].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat), + Single.Parse(m.Groups[2].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat)), + Single.Parse(m.Groups[3].ToString(), NumberStyles.Any, + CultureInfo.InvariantCulture.NumberFormat)); } } |