[bcl] Updates referencesource to 4.7.1
[mono-project.git] / mcs / class / referencesource / System.Xml / System / Xml / Serialization / PrimitiveXmlSerializers.cs
bloba41dc8f5b70e6633f42ed9cba4c12a50cd1db883
1 //------------------------------------------------------------------------------
2 // <copyright file="PrimitiveXmlSerializers.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
4 // </copyright>
5 // <owner current="true" primary="true">Microsoft</owner>
6 //------------------------------------------------------------------------------
8 namespace System.Xml.Serialization {
9 internal class XmlSerializationPrimitiveWriter : System.Xml.Serialization.XmlSerializationWriter {
11 internal void Write_string(object o) {
12 WriteStartDocument();
13 if (o == null) {
14 WriteNullTagLiteral(@"string", @"");
15 return;
17 TopLevelElement();
18 WriteNullableStringLiteral(@"string", @"", ((System.String)o));
21 internal void Write_int(object o) {
22 WriteStartDocument();
23 if (o == null) {
24 WriteEmptyTag(@"int", @"");
25 return;
27 WriteElementStringRaw(@"int", @"", System.Xml.XmlConvert.ToString((System.Int32)((System.Int32)o)));
30 internal void Write_boolean(object o) {
31 WriteStartDocument();
32 if (o == null) {
33 WriteEmptyTag(@"boolean", @"");
34 return;
36 WriteElementStringRaw(@"boolean", @"", System.Xml.XmlConvert.ToString((System.Boolean)((System.Boolean)o)));
39 internal void Write_short(object o) {
40 WriteStartDocument();
41 if (o == null) {
42 WriteEmptyTag(@"short", @"");
43 return;
45 WriteElementStringRaw(@"short", @"", System.Xml.XmlConvert.ToString((System.Int16)((System.Int16)o)));
48 internal void Write_long(object o) {
49 WriteStartDocument();
50 if (o == null) {
51 WriteEmptyTag(@"long", @"");
52 return;
54 WriteElementStringRaw(@"long", @"", System.Xml.XmlConvert.ToString((System.Int64)((System.Int64)o)));
57 internal void Write_float(object o) {
58 WriteStartDocument();
59 if (o == null) {
60 WriteEmptyTag(@"float", @"");
61 return;
63 WriteElementStringRaw(@"float", @"", System.Xml.XmlConvert.ToString((System.Single)((System.Single)o)));
66 internal void Write_double(object o) {
67 WriteStartDocument();
68 if (o == null) {
69 WriteEmptyTag(@"double", @"");
70 return;
72 WriteElementStringRaw(@"double", @"", System.Xml.XmlConvert.ToString((System.Double)((System.Double)o)));
75 internal void Write_decimal(object o) {
76 WriteStartDocument();
77 if (o == null) {
78 WriteEmptyTag(@"decimal", @"");
79 return;
81 WriteElementStringRaw(@"decimal", @"", System.Xml.XmlConvert.ToString((System.Decimal)((System.Decimal)o)));
84 internal void Write_dateTime(object o) {
85 WriteStartDocument();
86 if (o == null) {
87 WriteEmptyTag(@"dateTime", @"");
88 return;
90 WriteElementStringRaw(@"dateTime", @"", FromDateTime(((System.DateTime)o)));
93 internal void Write_unsignedByte(object o) {
94 WriteStartDocument();
95 if (o == null) {
96 WriteEmptyTag(@"unsignedByte", @"");
97 return;
99 WriteElementStringRaw(@"unsignedByte", @"", System.Xml.XmlConvert.ToString((System.Byte)((System.Byte)o)));
102 internal void Write_byte(object o) {
103 WriteStartDocument();
104 if (o == null) {
105 WriteEmptyTag(@"byte", @"");
106 return;
108 WriteElementStringRaw(@"byte", @"", System.Xml.XmlConvert.ToString((System.SByte)((System.SByte)o)));
111 internal void Write_unsignedShort(object o) {
112 WriteStartDocument();
113 if (o == null) {
114 WriteEmptyTag(@"unsignedShort", @"");
115 return;
117 WriteElementStringRaw(@"unsignedShort", @"", System.Xml.XmlConvert.ToString((System.UInt16)((System.UInt16)o)));
120 internal void Write_unsignedInt(object o) {
121 WriteStartDocument();
122 if (o == null) {
123 WriteEmptyTag(@"unsignedInt", @"");
124 return;
126 WriteElementStringRaw(@"unsignedInt", @"", System.Xml.XmlConvert.ToString((System.UInt32)((System.UInt32)o)));
129 internal void Write_unsignedLong(object o) {
130 WriteStartDocument();
131 if (o == null) {
132 WriteEmptyTag(@"unsignedLong", @"");
133 return;
135 WriteElementStringRaw(@"unsignedLong", @"", System.Xml.XmlConvert.ToString((System.UInt64)((System.UInt64)o)));
138 internal void Write_base64Binary(object o) {
139 WriteStartDocument();
140 if (o == null) {
141 WriteNullTagLiteral(@"base64Binary", @"");
142 return;
144 TopLevelElement();
145 WriteNullableStringLiteralRaw(@"base64Binary", @"", FromByteArrayBase64(((System.Byte[])o)));
148 internal void Write_guid(object o) {
149 WriteStartDocument();
150 if (o == null) {
151 WriteEmptyTag(@"guid", @"");
152 return;
154 WriteElementStringRaw(@"guid", @"", System.Xml.XmlConvert.ToString((System.Guid)((System.Guid)o)));
157 internal void Write_TimeSpan(object o)
159 WriteStartDocument();
160 if (o == null)
162 WriteEmptyTag(@"TimeSpan", @"");
163 return;
165 TimeSpan timeSpan = (TimeSpan)o;
166 WriteElementStringRaw(@"TimeSpan", @"", System.Xml.XmlConvert.ToString(timeSpan));
169 internal void Write_char(object o) {
170 WriteStartDocument();
171 if (o == null) {
172 WriteEmptyTag(@"char", @"");
173 return;
175 WriteElementString(@"char", @"", FromChar(((System.Char)o)));
178 internal void Write_QName(object o) {
179 WriteStartDocument();
180 if (o == null) {
181 WriteNullTagLiteral(@"QName", @"");
182 return;
184 TopLevelElement();
185 WriteNullableQualifiedNameLiteral(@"QName", @"", ((global::System.Xml.XmlQualifiedName)o));
188 protected override void InitCallbacks() {
192 internal class XmlSerializationPrimitiveReader : System.Xml.Serialization.XmlSerializationReader {
194 internal object Read_string() {
195 object o = null;
196 Reader.MoveToContent();
197 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
198 if (((object) Reader.LocalName == (object)id1_string && (object) Reader.NamespaceURI == (object)id2_Item)) {
199 if (ReadNull()) {
200 o = null;
202 else {
203 o = Reader.ReadElementString();
206 else {
207 throw CreateUnknownNodeException();
210 else {
211 UnknownNode(null);
213 return (object)o;
216 internal object Read_int() {
217 object o = null;
218 Reader.MoveToContent();
219 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
220 if (((object) Reader.LocalName == (object)id3_int && (object) Reader.NamespaceURI == (object)id2_Item)) {
222 o = System.Xml.XmlConvert.ToInt32(Reader.ReadElementString());
225 else {
226 throw CreateUnknownNodeException();
229 else {
230 UnknownNode(null);
232 return (object)o;
235 internal object Read_boolean() {
236 object o = null;
237 Reader.MoveToContent();
238 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
239 if (((object) Reader.LocalName == (object)id4_boolean && (object) Reader.NamespaceURI == (object)id2_Item)) {
241 o = System.Xml.XmlConvert.ToBoolean(Reader.ReadElementString());
244 else {
245 throw CreateUnknownNodeException();
248 else {
249 UnknownNode(null);
251 return (object)o;
254 internal object Read_short() {
255 object o = null;
256 Reader.MoveToContent();
257 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
258 if (((object) Reader.LocalName == (object)id5_short && (object) Reader.NamespaceURI == (object)id2_Item)) {
260 o = System.Xml.XmlConvert.ToInt16(Reader.ReadElementString());
263 else {
264 throw CreateUnknownNodeException();
267 else {
268 UnknownNode(null);
270 return (object)o;
273 internal object Read_long() {
274 object o = null;
275 Reader.MoveToContent();
276 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
277 if (((object) Reader.LocalName == (object)id6_long && (object) Reader.NamespaceURI == (object)id2_Item)) {
279 o = System.Xml.XmlConvert.ToInt64(Reader.ReadElementString());
282 else {
283 throw CreateUnknownNodeException();
286 else {
287 UnknownNode(null);
289 return (object)o;
292 internal object Read_float() {
293 object o = null;
294 Reader.MoveToContent();
295 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
296 if (((object) Reader.LocalName == (object)id7_float && (object) Reader.NamespaceURI == (object)id2_Item)) {
298 o = System.Xml.XmlConvert.ToSingle(Reader.ReadElementString());
301 else {
302 throw CreateUnknownNodeException();
305 else {
306 UnknownNode(null);
308 return (object)o;
311 internal object Read_double() {
312 object o = null;
313 Reader.MoveToContent();
314 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
315 if (((object) Reader.LocalName == (object)id8_double && (object) Reader.NamespaceURI == (object)id2_Item)) {
317 o = System.Xml.XmlConvert.ToDouble(Reader.ReadElementString());
320 else {
321 throw CreateUnknownNodeException();
324 else {
325 UnknownNode(null);
327 return (object)o;
330 internal object Read_decimal() {
331 object o = null;
332 Reader.MoveToContent();
333 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
334 if (((object) Reader.LocalName == (object)id9_decimal && (object) Reader.NamespaceURI == (object)id2_Item)) {
336 o = System.Xml.XmlConvert.ToDecimal(Reader.ReadElementString());
339 else {
340 throw CreateUnknownNodeException();
343 else {
344 UnknownNode(null);
346 return (object)o;
349 internal object Read_dateTime() {
350 object o = null;
351 Reader.MoveToContent();
352 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
353 if (((object) Reader.LocalName == (object)id10_dateTime && (object) Reader.NamespaceURI == (object)id2_Item)) {
355 o = ToDateTime(Reader.ReadElementString());
358 else {
359 throw CreateUnknownNodeException();
362 else {
363 UnknownNode(null);
365 return (object)o;
368 internal object Read_unsignedByte() {
369 object o = null;
370 Reader.MoveToContent();
371 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
372 if (((object) Reader.LocalName == (object)id11_unsignedByte && (object) Reader.NamespaceURI == (object)id2_Item)) {
374 o = System.Xml.XmlConvert.ToByte(Reader.ReadElementString());
377 else {
378 throw CreateUnknownNodeException();
381 else {
382 UnknownNode(null);
384 return (object)o;
387 internal object Read_byte() {
388 object o = null;
389 Reader.MoveToContent();
390 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
391 if (((object) Reader.LocalName == (object)id12_byte && (object) Reader.NamespaceURI == (object)id2_Item)) {
393 o = System.Xml.XmlConvert.ToSByte(Reader.ReadElementString());
396 else {
397 throw CreateUnknownNodeException();
400 else {
401 UnknownNode(null);
403 return (object)o;
406 internal object Read_unsignedShort() {
407 object o = null;
408 Reader.MoveToContent();
409 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
410 if (((object) Reader.LocalName == (object)id13_unsignedShort && (object) Reader.NamespaceURI == (object)id2_Item)) {
412 o = System.Xml.XmlConvert.ToUInt16(Reader.ReadElementString());
415 else {
416 throw CreateUnknownNodeException();
419 else {
420 UnknownNode(null);
422 return (object)o;
425 internal object Read_unsignedInt() {
426 object o = null;
427 Reader.MoveToContent();
428 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
429 if (((object) Reader.LocalName == (object)id14_unsignedInt && (object) Reader.NamespaceURI == (object)id2_Item)) {
431 o = System.Xml.XmlConvert.ToUInt32(Reader.ReadElementString());
434 else {
435 throw CreateUnknownNodeException();
438 else {
439 UnknownNode(null);
441 return (object)o;
444 internal object Read_unsignedLong() {
445 object o = null;
446 Reader.MoveToContent();
447 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
448 if (((object) Reader.LocalName == (object)id15_unsignedLong && (object) Reader.NamespaceURI == (object)id2_Item)) {
450 o = System.Xml.XmlConvert.ToUInt64(Reader.ReadElementString());
453 else {
454 throw CreateUnknownNodeException();
457 else {
458 UnknownNode(null);
460 return (object)o;
463 internal object Read_base64Binary() {
464 object o = null;
465 Reader.MoveToContent();
466 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
467 if (((object) Reader.LocalName == (object)id16_base64Binary && (object) Reader.NamespaceURI == (object)id2_Item)) {
468 if (ReadNull()) {
469 o = null;
471 else {
472 o = ToByteArrayBase64(false);
475 else {
476 throw CreateUnknownNodeException();
479 else {
480 UnknownNode(null);
482 return (object)o;
485 internal object Read_guid() {
486 object o = null;
487 Reader.MoveToContent();
488 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
489 if (((object) Reader.LocalName == (object)id17_guid && (object) Reader.NamespaceURI == (object)id2_Item)) {
491 o = System.Xml.XmlConvert.ToGuid(Reader.ReadElementString());
494 else {
495 throw CreateUnknownNodeException();
498 else {
499 UnknownNode(null);
501 return (object)o;
504 internal object Read_TimeSpan()
506 object o = null;
507 Reader.MoveToContent();
508 if (Reader.NodeType == System.Xml.XmlNodeType.Element)
510 if (((object)Reader.LocalName == (object)id19_TimeSpan && (object)Reader.NamespaceURI == (object)id2_Item))
512 if (Reader.IsEmptyElement)
514 Reader.Skip();
515 //For backward compatibiity
516 //When using old serializer, the serialized TimeSpan value is empty string
517 o = default(TimeSpan);
519 else
521 o = System.Xml.XmlConvert.ToTimeSpan(Reader.ReadElementString());
524 else
526 throw CreateUnknownNodeException();
529 else
531 UnknownNode(null);
533 return (object)o;
536 internal object Read_char() {
537 object o = null;
538 Reader.MoveToContent();
539 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
540 if (((object) Reader.LocalName == (object)id18_char && (object) Reader.NamespaceURI == (object)id2_Item)) {
542 o = ToChar(Reader.ReadElementString());
545 else {
546 throw CreateUnknownNodeException();
549 else {
550 UnknownNode(null);
552 return (object)o;
555 internal object Read_QName() {
556 object o = null;
557 Reader.MoveToContent();
558 if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
559 if (((object) Reader.LocalName == (object)id1_QName && (object) Reader.NamespaceURI == (object)id2_Item)) {
560 if (ReadNull()) {
561 o = null;
563 else {
564 o = ReadElementQualifiedName();
567 else {
568 throw CreateUnknownNodeException();
571 else {
572 UnknownNode(null);
574 return (object)o;
577 protected override void InitCallbacks() {
580 System.String id4_boolean;
581 System.String id14_unsignedInt;
582 System.String id15_unsignedLong;
583 System.String id7_float;
584 System.String id10_dateTime;
585 System.String id6_long;
586 System.String id9_decimal;
587 System.String id8_double;
588 System.String id17_guid;
589 System.String id19_TimeSpan;
590 System.String id2_Item;
591 System.String id13_unsignedShort;
592 System.String id18_char;
593 System.String id3_int;
594 System.String id12_byte;
595 System.String id16_base64Binary;
596 System.String id11_unsignedByte;
597 System.String id5_short;
598 System.String id1_string;
599 System.String id1_QName;
601 protected override void InitIDs() {
602 id4_boolean = Reader.NameTable.Add(@"boolean");
603 id14_unsignedInt = Reader.NameTable.Add(@"unsignedInt");
604 id15_unsignedLong = Reader.NameTable.Add(@"unsignedLong");
605 id7_float = Reader.NameTable.Add(@"float");
606 id10_dateTime = Reader.NameTable.Add(@"dateTime");
607 id6_long = Reader.NameTable.Add(@"long");
608 id9_decimal = Reader.NameTable.Add(@"decimal");
609 id8_double = Reader.NameTable.Add(@"double");
610 id17_guid = Reader.NameTable.Add(@"guid");
611 if (LocalAppContextSwitches.EnableTimeSpanSerialization)
613 id19_TimeSpan = Reader.NameTable.Add(@"TimeSpan");
615 id2_Item = Reader.NameTable.Add(@"");
616 id13_unsignedShort = Reader.NameTable.Add(@"unsignedShort");
617 id18_char = Reader.NameTable.Add(@"char");
618 id3_int = Reader.NameTable.Add(@"int");
619 id12_byte = Reader.NameTable.Add(@"byte");
620 id16_base64Binary = Reader.NameTable.Add(@"base64Binary");
621 id11_unsignedByte = Reader.NameTable.Add(@"unsignedByte");
622 id5_short = Reader.NameTable.Add(@"short");
623 id1_string = Reader.NameTable.Add(@"string");
624 id1_QName = Reader.NameTable.Add(@"QName");