2010-04-07 Jb Evain <jbevain@novell.com>
[mcs.git] / class / System.XML / System.Xml / XQueryConvert.cs
blob178cb53dbcb22ee397b9923d34ab3d9c82c96187
1 //
2 // System.Xml.Query.XQueryConvert
3 //
4 // Author:
5 // Atsushi Enomoto <atsushi@ximian.com>
6 //
7 // Copyright (C) 2004 Novell Inc.
8 //
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
18 //
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 //
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 #if NET_2_0
32 using System;
33 using System.Globalization;
34 using System.IO;
35 using System.Text;
36 using System.Xml;
37 using System.Xml.Schema;
39 namespace System.Xml
41 // basically this class is obsoleted and removed from .NET 2.0.
42 internal class XQueryConvert
44 private XQueryConvert ()
48 public static XmlTypeCode GetFallbackType (XmlTypeCode type)
50 switch (type) {
51 case XmlTypeCode.AnyAtomicType:
52 return XmlTypeCode.Item;
53 case XmlTypeCode.UntypedAtomic:
54 return XmlTypeCode.String;
55 case XmlTypeCode.Notation:
56 return XmlTypeCode.QName;
57 case XmlTypeCode.NormalizedString:
58 case XmlTypeCode.Token:
59 case XmlTypeCode.Language:
60 case XmlTypeCode.NmToken:
61 case XmlTypeCode.Name:
62 case XmlTypeCode.NCName:
63 case XmlTypeCode.Id:
64 case XmlTypeCode.Idref:
65 case XmlTypeCode.Entity:
66 return XmlTypeCode.String;
67 case XmlTypeCode.NonPositiveInteger:
68 return XmlTypeCode.Decimal;
69 case XmlTypeCode.NegativeInteger:
70 return XmlTypeCode.NonPositiveInteger;
71 case XmlTypeCode.Long:
72 return XmlTypeCode.Integer;
73 case XmlTypeCode.Short:
74 return XmlTypeCode.Int;
75 case XmlTypeCode.Byte:
76 return XmlTypeCode.Int;
77 case XmlTypeCode.NonNegativeInteger:
78 return XmlTypeCode.Decimal;
79 case XmlTypeCode.UnsignedLong:
80 return XmlTypeCode.NonNegativeInteger;
81 case XmlTypeCode.UnsignedInt:
82 return XmlTypeCode.Integer;
83 case XmlTypeCode.UnsignedShort:
84 return XmlTypeCode.Int;
85 case XmlTypeCode.UnsignedByte:
86 return XmlTypeCode.UnsignedShort;
87 case XmlTypeCode.PositiveInteger:
88 return XmlTypeCode.NonNegativeInteger;
89 default:
90 return XmlTypeCode.None;
94 // Individual conversion
96 public static string AnyUriToString (string value)
98 return value;
101 public static byte [] Base64BinaryToHexBinary (byte [] value)
103 return XmlConvert.FromBinHexString (Convert.ToBase64String (value));
106 public static string Base64BinaryToString (byte [] value)
108 return Convert.ToBase64String (value);
111 public static decimal BooleanToDecimal (bool value)
113 return Convert.ToDecimal (value);
116 public static double BooleanToDouble (bool value)
118 return Convert.ToDouble (value);
121 public static float BooleanToFloat (bool value)
123 return Convert.ToSingle (value);
126 public static int BooleanToInt (bool value)
128 return Convert.ToInt32 (value);
131 public static long BooleanToInteger (bool value)
133 return Convert.ToInt64 (value);
136 public static string BooleanToString (bool value)
138 // It looks not returning "True"
139 return value ? "true" : "false";
142 public static DateTime DateTimeToDate (DateTime value)
144 return value.Date;
147 public static DateTime DateTimeToGDay (DateTime value)
149 return new DateTime (0, 0, value.Day);
152 public static DateTime DateTimeToGMonth (DateTime value)
154 return new DateTime (0, value.Month, 0);
157 public static DateTime DateTimeToGMonthDay (DateTime value)
159 return new DateTime (0, value.Month, value.Day);
162 public static DateTime DateTimeToGYear (DateTime value)
164 return new DateTime (value.Year, 0, 0);
167 public static DateTime DateTimeToGYearMonth (DateTime value)
169 return new DateTime (value.Year, value.Month, 0);
172 public static DateTime DateTimeToTime (DateTime value)
174 return new DateTime (value.TimeOfDay.Ticks);
177 public static DateTime DateToDateTime (DateTime value)
179 return value.Date;
182 public static DateTime DateToGDay (DateTime value)
184 return new DateTime (0, 0, value.Day);
187 public static DateTime DateToGMonth (DateTime value)
189 return new DateTime (0, value.Month, 0);
192 public static DateTime DateToGMonthDay (DateTime value)
194 return new DateTime (0, value.Month, value.Day);
197 public static DateTime DateToGYear (DateTime value)
199 return new DateTime (value.Year, 0, 0);
202 public static DateTime DateToGYearMonth (DateTime value)
204 return new DateTime (value.Year, value.Month, 0);
207 public static string DateToString (DateTime value)
209 return XmlConvert.ToString (value);
212 public static string DateTimeToString (DateTime value)
214 return XmlConvert.ToString (value);
217 public static string DayTimeDurationToDuration (TimeSpan value)
219 return XmlConvert.ToString (value);
222 public static string DayTimeDurationToString (TimeSpan value)
224 return DayTimeDurationToDuration (value);
227 public static bool DecimalToBoolean (decimal value)
229 return value != 0;
232 public static double DecimalToDouble (decimal value)
234 return Convert.ToDouble (value);
237 public static float DecimalToFloat (decimal value)
239 return Convert.ToSingle (value);
242 public static int DecimalToInt (decimal value)
244 return Convert.ToInt32 (value);
247 public static long DecimalToInteger (decimal value)
249 return Convert.ToInt64 (value);
252 public static string DecimalToString (decimal value)
254 return XmlConvert.ToString (value);
257 public static bool DoubleToBoolean (double value)
259 return value != 0;
262 public static decimal DoubleToDecimal (double value)
264 return (decimal) value;
267 public static float DoubleToFloat (double value)
269 return Convert.ToSingle (value);
272 public static int DoubleToInt (double value)
274 return Convert.ToInt32 (value);
277 public static long DoubleToInteger (double value)
279 return Convert.ToInt64 (value);
282 public static string DoubleToString (double value)
284 return XmlConvert.ToString (value);
287 public static TimeSpan DurationToDayTimeDuration (string value)
289 return XmlConvert.ToTimeSpan (value);
292 public static string DurationToString (string value)
294 return XmlConvert.ToString (XmlConvert.ToTimeSpan (value));
297 public static TimeSpan DurationToYearMonthDuration (string value)
299 return XmlConvert.ToTimeSpan (value);
303 public static bool FloatToBoolean (float value)
305 return value != 0;
308 public static decimal FloatToDecimal (float value)
310 return (decimal) value;
313 public static double FloatToDouble (float value)
315 return Convert.ToDouble (value);
318 public static int FloatToInt (float value)
320 return Convert.ToInt32 (value);
323 public static long FloatToInteger (float value)
325 return Convert.ToInt64 (value);
328 public static string FloatToString (float value)
330 return XmlConvert.ToString (value);
333 public static string GDayToString (DateTime value)
335 return XmlConvert.ToString (TimeSpan.FromDays (value.Day));
338 public static string GMonthDayToString (DateTime value)
340 return XmlConvert.ToString (new TimeSpan (value.Day, value.Hour, value.Minute, value.Second));
343 public static string GMonthToString (DateTime value)
345 return XmlConvert.ToString (new TimeSpan (0, value.Month, 0));
348 public static string GYearMonthToString (DateTime value)
350 return XmlConvert.ToString (new TimeSpan (value.Year, value.Month, 0));
353 public static string GYearToString (DateTime value)
355 return XmlConvert.ToString (new TimeSpan (new DateTime (value.Year, 0, 0).Ticks));
358 public static string HexBinaryToString (byte [] data)
360 return XmlConvert.ToBinHexString (data);
363 public static byte [] HexBinaryToBase64Binary (byte [] data)
365 return data;//XmlConvert.ToBinHexString (data);
369 public static bool IntegerToBoolean (long value)
371 return value != 0;
374 public static decimal IntegerToDecimal (long value)
376 return (decimal) value;
379 public static double IntegerToDouble (long value)
381 return Convert.ToDouble (value);
384 public static float IntegerToFloat (long value)
386 return Convert.ToSingle (value);
389 public static int IntegerToInt (long value)
391 return Convert.ToInt32 (value);
394 public static string IntegerToString (long value)
396 return XmlConvert.ToString (value);
399 public static bool IntToBoolean (int value)
401 return value != 0;
404 public static decimal IntToDecimal (int value)
406 return (decimal) value;
409 public static double IntToDouble (int value)
411 return Convert.ToDouble (value);
414 public static float IntToFloat (int value)
416 return Convert.ToSingle (value);
419 public static long IntToInteger (int value)
421 return value;
424 public static string IntToString (int value)
426 return XmlConvert.ToString (value);
429 public static string NonNegativeIntegerToString (decimal value)
431 return XmlConvert.ToString (value);
434 public static string NonPositiveIntegerToString (decimal value)
436 return XmlConvert.ToString (value);
439 public static DateTime TimeToDateTime (DateTime value)
441 return value;
444 public static string TimeToString (DateTime value)
446 return XmlConvert.ToString (value, "HH:mm:ssZ");
449 public static string YearMonthDurationToDuration (TimeSpan value)
451 return XmlConvert.ToString (value);
454 public static string YearMonthDurationToString (TimeSpan value)
456 return YearMonthDurationToDuration (value);
459 public static string StringToAnyUri (string value)
461 return value;
464 public static byte [] StringToBase64Binary (string value)
466 return Convert.FromBase64String (value);
469 public static bool StringToBoolean (string value)
471 return XmlConvert.ToBoolean (value);
474 public static DateTime StringToDate (string value)
476 return XmlConvert.ToDateTime (value);
479 public static DateTime StringToDateTime (string value)
481 return XmlConvert.ToDateTime (value);
484 public static TimeSpan StringToDayTimeDuration (string value)
486 return XmlConvert.ToTimeSpan (value);
489 public static decimal StringToDecimal (string value)
491 return XmlConvert.ToDecimal (value);
494 public static double StringToDouble (string value)
496 return XmlConvert.ToDouble (value);
499 public static string StringToDuration (string value)
501 return XmlConvert.ToString (XmlConvert.ToTimeSpan (value));
504 public static float StringToFloat (string value)
506 return XmlConvert.ToSingle (value);
509 public static DateTime StringToGDay (string value)
511 return XmlConvert.ToDateTime (value);
514 public static DateTime StringToGMonth (string value)
516 return XmlConvert.ToDateTime (value);
519 public static DateTime StringToGMonthDay (string value)
521 return XmlConvert.ToDateTime (value);
524 public static DateTime StringToGYear (string value)
526 return XmlConvert.ToDateTime (value);
529 public static DateTime StringToGYearMonth (string value)
531 return XmlConvert.ToDateTime (value);
534 public static byte [] StringToHexBinary (string value)
536 return XmlConvert.FromBinHexString (value);
539 public static int StringToInt (string value)
541 return XmlConvert.ToInt32 (value);
544 public static long StringToInteger (string value)
546 return XmlConvert.ToInt64 (value);
549 public static decimal StringToNonNegativeInteger (string value)
551 return XmlConvert.ToDecimal (value);
554 public static decimal StringToNonPositiveInteger (string value)
556 return XmlConvert.ToDecimal (value);
559 public static DateTime StringToTime (string value)
561 return XmlConvert.ToDateTime (value);
564 public static long StringToUnsignedInt (string value)
566 return XmlConvert.ToUInt32 (value);
569 public static decimal StringToUnsignedLong (string value)
571 return XmlConvert.ToUInt64 (value);
574 public static int StringToUnsignedShort (string value)
576 return XmlConvert.ToUInt16 (value);
579 public static TimeSpan StringToYearMonthDuration (string value)
581 return XmlConvert.ToTimeSpan (value);
586 #endif