Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XmlBinaryReader.cs
Go to the documentation of this file.
2using System.IO;
4
5namespace System.Xml;
6
8{
9 private enum ArrayState
10 {
11 None,
12 Element,
13 Content
14 }
15
17
18 private bool _buffered;
19
21
22 private int _arrayCount;
23
24 private int _maxBytesPerRead;
25
27
54
56 {
57 if (stream == null)
58 {
60 }
62 base.BufferReader.SetBuffer(stream, dictionary, session);
63 _buffered = false;
64 }
65
67 {
69 _maxBytesPerRead = quotas.MaxBytesPerRead;
72 }
73
74 public override void Close()
75 {
76 base.Close();
77 }
78
79 public override string ReadElementContentAsString()
80 {
81 if (base.Node.NodeType != XmlNodeType.Element)
82 {
84 }
86 {
87 return base.ReadElementContentAsString();
88 }
89 string text;
90 switch (GetNodeType())
91 {
92 case XmlBinaryNodeType.Chars8TextWithEndElement:
94 text = base.BufferReader.ReadUTF8String(ReadUInt8());
96 break;
97 case XmlBinaryNodeType.DictionaryTextWithEndElement:
99 text = base.BufferReader.GetDictionaryString(ReadDictionaryKey()).Value;
101 break;
102 default:
103 text = base.ReadElementContentAsString();
104 break;
105 }
107 {
109 }
110 return text;
111 }
112
113 public override bool ReadElementContentAsBoolean()
114 {
115 if (base.Node.NodeType != XmlNodeType.Element)
116 {
118 }
120 {
121 return base.ReadElementContentAsBoolean();
122 }
123 bool result;
124 switch (GetNodeType())
125 {
126 case XmlBinaryNodeType.TrueTextWithEndElement:
127 SkipNodeType();
128 result = true;
130 break;
131 case XmlBinaryNodeType.FalseTextWithEndElement:
132 SkipNodeType();
133 result = false;
135 break;
136 case XmlBinaryNodeType.BoolTextWithEndElement:
137 SkipNodeType();
138 result = base.BufferReader.ReadUInt8() != 0;
140 break;
141 default:
142 result = base.ReadElementContentAsBoolean();
143 break;
144 }
145 return result;
146 }
147
148 public override int ReadElementContentAsInt()
149 {
150 if (base.Node.NodeType != XmlNodeType.Element)
151 {
153 }
155 {
156 return base.ReadElementContentAsInt();
157 }
158 int result;
159 switch (GetNodeType())
160 {
161 case XmlBinaryNodeType.ZeroTextWithEndElement:
162 SkipNodeType();
163 result = 0;
165 break;
166 case XmlBinaryNodeType.OneTextWithEndElement:
167 SkipNodeType();
168 result = 1;
170 break;
171 case XmlBinaryNodeType.Int8TextWithEndElement:
172 SkipNodeType();
173 result = base.BufferReader.ReadInt8();
175 break;
176 case XmlBinaryNodeType.Int16TextWithEndElement:
177 SkipNodeType();
178 result = base.BufferReader.ReadInt16();
180 break;
181 case XmlBinaryNodeType.Int32TextWithEndElement:
182 SkipNodeType();
183 result = base.BufferReader.ReadInt32();
185 break;
186 default:
187 result = base.ReadElementContentAsInt();
188 break;
189 }
190 return result;
191 }
192
194 {
195 if (_arrayState == ArrayState.None)
196 {
197 return !base.Signing;
198 }
199 return false;
200 }
201
202 public override float ReadElementContentAsFloat()
203 {
204 if (base.Node.NodeType != XmlNodeType.Element)
205 {
207 }
208 if (CanOptimizeReadElementContent() && GetNodeType() == XmlBinaryNodeType.FloatTextWithEndElement)
209 {
210 SkipNodeType();
211 float result = base.BufferReader.ReadSingle();
213 return result;
214 }
215 return base.ReadElementContentAsFloat();
216 }
217
218 public override double ReadElementContentAsDouble()
219 {
220 if (base.Node.NodeType != XmlNodeType.Element)
221 {
223 }
224 if (CanOptimizeReadElementContent() && GetNodeType() == XmlBinaryNodeType.DoubleTextWithEndElement)
225 {
226 SkipNodeType();
227 double result = base.BufferReader.ReadDouble();
229 return result;
230 }
231 return base.ReadElementContentAsDouble();
232 }
233
234 public override decimal ReadElementContentAsDecimal()
235 {
236 if (base.Node.NodeType != XmlNodeType.Element)
237 {
239 }
240 if (CanOptimizeReadElementContent() && GetNodeType() == XmlBinaryNodeType.DecimalTextWithEndElement)
241 {
242 SkipNodeType();
243 decimal result = base.BufferReader.ReadDecimal();
245 return result;
246 }
247 return base.ReadElementContentAsDecimal();
248 }
249
251 {
252 if (base.Node.NodeType != XmlNodeType.Element)
253 {
255 }
256 if (CanOptimizeReadElementContent() && GetNodeType() == XmlBinaryNodeType.DateTimeTextWithEndElement)
257 {
258 SkipNodeType();
259 DateTime result = base.BufferReader.ReadDateTime();
261 return result;
262 }
263 return base.ReadElementContentAsDateTime();
264 }
265
267 {
268 if (base.Node.NodeType != XmlNodeType.Element)
269 {
271 }
272 if (CanOptimizeReadElementContent() && GetNodeType() == XmlBinaryNodeType.TimeSpanTextWithEndElement)
273 {
274 SkipNodeType();
275 TimeSpan result = base.BufferReader.ReadTimeSpan();
277 return result;
278 }
279 return base.ReadElementContentAsTimeSpan();
280 }
281
283 {
284 if (base.Node.NodeType != XmlNodeType.Element)
285 {
287 }
288 if (CanOptimizeReadElementContent() && GetNodeType() == XmlBinaryNodeType.GuidTextWithEndElement)
289 {
290 SkipNodeType();
291 Guid result = base.BufferReader.ReadGuid();
293 return result;
294 }
295 return base.ReadElementContentAsGuid();
296 }
297
299 {
300 if (base.Node.NodeType != XmlNodeType.Element)
301 {
303 }
304 if (CanOptimizeReadElementContent() && GetNodeType() == XmlBinaryNodeType.UniqueIdTextWithEndElement)
305 {
306 SkipNodeType();
307 UniqueId result = base.BufferReader.ReadUniqueId();
309 return result;
310 }
311 return base.ReadElementContentAsUniqueId();
312 }
313
314 public override bool TryGetBase64ContentLength(out int length)
315 {
316 length = 0;
317 if (!_buffered)
318 {
319 return false;
320 }
321 if (_arrayState != 0)
322 {
323 return false;
324 }
325 if (!base.Node.Value.TryGetByteArrayLength(out var length2))
326 {
327 return false;
328 }
329 int offset = base.BufferReader.Offset;
330 try
331 {
332 bool flag = false;
333 while (!flag && !base.BufferReader.EndOfFile)
334 {
335 XmlBinaryNodeType nodeType = GetNodeType();
336 SkipNodeType();
337 int num;
338 switch (nodeType)
339 {
340 case XmlBinaryNodeType.Bytes8TextWithEndElement:
341 num = base.BufferReader.ReadUInt8();
342 flag = true;
343 break;
344 case XmlBinaryNodeType.Bytes16TextWithEndElement:
345 num = base.BufferReader.ReadUInt16();
346 flag = true;
347 break;
348 case XmlBinaryNodeType.Bytes32TextWithEndElement:
349 num = base.BufferReader.ReadUInt31();
350 flag = true;
351 break;
352 case XmlBinaryNodeType.EndElement:
353 num = 0;
354 flag = true;
355 break;
356 case XmlBinaryNodeType.Bytes8Text:
357 num = base.BufferReader.ReadUInt8();
358 break;
359 case XmlBinaryNodeType.Bytes16Text:
360 num = base.BufferReader.ReadUInt16();
361 break;
362 case XmlBinaryNodeType.Bytes32Text:
363 num = base.BufferReader.ReadUInt31();
364 break;
365 default:
366 return false;
367 }
368 base.BufferReader.Advance(num);
369 if (length2 > int.MaxValue - num)
370 {
371 return false;
372 }
373 length2 += num;
374 }
375 length = length2;
376 return true;
377 }
378 finally
379 {
381 }
382 }
383
385 {
386 ExitScope();
387 ReadNode();
388 }
389
395
396 public override bool Read()
397 {
398 if (base.Node.ReadState == ReadState.Closed)
399 {
400 return false;
401 }
402 SignNode();
404 {
405 _isTextWithEndElement = false;
407 return true;
408 }
409 if (_arrayState == ArrayState.Content)
410 {
411 if (_arrayCount != 0)
412 {
414 return true;
415 }
416 _arrayState = ArrayState.None;
417 }
418 if (base.Node.ExitScope)
419 {
420 ExitScope();
421 }
422 return ReadNode();
423 }
424
425 private bool ReadNode()
426 {
427 if (!_buffered)
428 {
429 base.BufferReader.SetWindow(base.ElementNode.BufferOffset, _maxBytesPerRead);
430 }
431 if (base.BufferReader.EndOfFile)
432 {
434 return false;
435 }
437 if (_arrayState == ArrayState.None)
438 {
440 SkipNodeType();
441 }
442 else
443 {
445 _arrayCount--;
446 _arrayState = ArrayState.Content;
447 }
448 switch (xmlBinaryNodeType)
449 {
450 case XmlBinaryNodeType.MinElement:
451 {
453 xmlElementNode.Prefix.SetValue(PrefixHandleType.Empty);
454 ReadName(xmlElementNode.LocalName);
457 xmlElementNode.BufferOffset = base.BufferReader.Offset;
458 return true;
459 }
460 case XmlBinaryNodeType.Element:
461 {
463 ReadName(xmlElementNode.Prefix);
464 ReadName(xmlElementNode.LocalName);
467 xmlElementNode.BufferOffset = base.BufferReader.Offset;
468 return true;
469 }
470 case XmlBinaryNodeType.ShortDictionaryElement:
471 {
473 xmlElementNode.Prefix.SetValue(PrefixHandleType.Empty);
477 xmlElementNode.BufferOffset = base.BufferReader.Offset;
478 return true;
479 }
480 case XmlBinaryNodeType.DictionaryElement:
481 {
483 ReadName(xmlElementNode.Prefix);
487 xmlElementNode.BufferOffset = base.BufferReader.Offset;
488 return true;
489 }
490 case XmlBinaryNodeType.PrefixElementA:
491 case XmlBinaryNodeType.PrefixElementB:
492 case XmlBinaryNodeType.PrefixElementC:
493 case XmlBinaryNodeType.PrefixElementD:
494 case XmlBinaryNodeType.PrefixElementE:
495 case XmlBinaryNodeType.PrefixElementF:
496 case XmlBinaryNodeType.PrefixElementG:
497 case XmlBinaryNodeType.PrefixElementH:
498 case XmlBinaryNodeType.PrefixElementI:
499 case XmlBinaryNodeType.PrefixElementJ:
500 case XmlBinaryNodeType.PrefixElementK:
501 case XmlBinaryNodeType.PrefixElementL:
502 case XmlBinaryNodeType.PrefixElementM:
503 case XmlBinaryNodeType.PrefixElementN:
504 case XmlBinaryNodeType.PrefixElementO:
505 case XmlBinaryNodeType.PrefixElementP:
506 case XmlBinaryNodeType.PrefixElementQ:
507 case XmlBinaryNodeType.PrefixElementR:
508 case XmlBinaryNodeType.PrefixElementS:
509 case XmlBinaryNodeType.PrefixElementT:
510 case XmlBinaryNodeType.PrefixElementU:
511 case XmlBinaryNodeType.PrefixElementV:
512 case XmlBinaryNodeType.PrefixElementW:
513 case XmlBinaryNodeType.PrefixElementX:
514 case XmlBinaryNodeType.PrefixElementY:
515 case XmlBinaryNodeType.PrefixElementZ:
516 {
519 xmlElementNode.Prefix.SetValue(alphaPrefix);
520 ReadName(xmlElementNode.LocalName);
523 xmlElementNode.BufferOffset = base.BufferReader.Offset;
524 return true;
525 }
526 case XmlBinaryNodeType.PrefixDictionaryElementA:
527 case XmlBinaryNodeType.PrefixDictionaryElementB:
528 case XmlBinaryNodeType.PrefixDictionaryElementC:
529 case XmlBinaryNodeType.PrefixDictionaryElementD:
530 case XmlBinaryNodeType.PrefixDictionaryElementE:
531 case XmlBinaryNodeType.PrefixDictionaryElementF:
532 case XmlBinaryNodeType.PrefixDictionaryElementG:
533 case XmlBinaryNodeType.PrefixDictionaryElementH:
534 case XmlBinaryNodeType.PrefixDictionaryElementI:
535 case XmlBinaryNodeType.PrefixDictionaryElementJ:
536 case XmlBinaryNodeType.PrefixDictionaryElementK:
537 case XmlBinaryNodeType.PrefixDictionaryElementL:
538 case XmlBinaryNodeType.PrefixDictionaryElementM:
539 case XmlBinaryNodeType.PrefixDictionaryElementN:
540 case XmlBinaryNodeType.PrefixDictionaryElementO:
541 case XmlBinaryNodeType.PrefixDictionaryElementP:
542 case XmlBinaryNodeType.PrefixDictionaryElementQ:
543 case XmlBinaryNodeType.PrefixDictionaryElementR:
544 case XmlBinaryNodeType.PrefixDictionaryElementS:
545 case XmlBinaryNodeType.PrefixDictionaryElementT:
546 case XmlBinaryNodeType.PrefixDictionaryElementU:
547 case XmlBinaryNodeType.PrefixDictionaryElementV:
548 case XmlBinaryNodeType.PrefixDictionaryElementW:
549 case XmlBinaryNodeType.PrefixDictionaryElementX:
550 case XmlBinaryNodeType.PrefixDictionaryElementY:
551 case XmlBinaryNodeType.PrefixDictionaryElementZ:
552 {
555 xmlElementNode.Prefix.SetValue(alphaPrefix);
559 xmlElementNode.BufferOffset = base.BufferReader.Offset;
560 return true;
561 }
562 case XmlBinaryNodeType.EndElement:
564 return true;
565 case XmlBinaryNodeType.Comment:
567 return true;
568 case XmlBinaryNodeType.EmptyTextWithEndElement:
570 if (base.OutsideRootElement)
571 {
573 }
574 return true;
575 case XmlBinaryNodeType.ZeroTextWithEndElement:
577 if (base.OutsideRootElement)
578 {
580 }
581 return true;
582 case XmlBinaryNodeType.OneTextWithEndElement:
584 if (base.OutsideRootElement)
585 {
587 }
588 return true;
589 case XmlBinaryNodeType.TrueTextWithEndElement:
591 if (base.OutsideRootElement)
592 {
594 }
595 return true;
596 case XmlBinaryNodeType.FalseTextWithEndElement:
598 if (base.OutsideRootElement)
599 {
601 }
602 return true;
603 case XmlBinaryNodeType.BoolTextWithEndElement:
605 if (base.OutsideRootElement)
606 {
608 }
609 return true;
610 case XmlBinaryNodeType.Chars8TextWithEndElement:
611 if (_buffered)
612 {
614 }
615 else
616 {
618 }
619 return true;
620 case XmlBinaryNodeType.Chars8Text:
621 if (_buffered)
622 {
624 }
625 else
626 {
628 }
629 return true;
630 case XmlBinaryNodeType.Chars16TextWithEndElement:
631 if (_buffered)
632 {
634 }
635 else
636 {
638 }
639 return true;
640 case XmlBinaryNodeType.Chars16Text:
641 if (_buffered)
642 {
644 }
645 else
646 {
648 }
649 return true;
650 case XmlBinaryNodeType.Chars32TextWithEndElement:
651 if (_buffered)
652 {
654 }
655 else
656 {
658 }
659 return true;
660 case XmlBinaryNodeType.Chars32Text:
661 if (_buffered)
662 {
664 }
665 else
666 {
668 }
669 return true;
670 case XmlBinaryNodeType.UnicodeChars8TextWithEndElement:
672 return true;
673 case XmlBinaryNodeType.UnicodeChars8Text:
675 return true;
676 case XmlBinaryNodeType.UnicodeChars16TextWithEndElement:
678 return true;
679 case XmlBinaryNodeType.UnicodeChars16Text:
681 return true;
682 case XmlBinaryNodeType.UnicodeChars32TextWithEndElement:
684 return true;
685 case XmlBinaryNodeType.UnicodeChars32Text:
687 return true;
688 case XmlBinaryNodeType.Bytes8TextWithEndElement:
689 if (_buffered)
690 {
692 }
693 else
694 {
696 }
697 return true;
698 case XmlBinaryNodeType.Bytes8Text:
699 if (_buffered)
700 {
702 }
703 else
704 {
706 }
707 return true;
708 case XmlBinaryNodeType.Bytes16TextWithEndElement:
709 if (_buffered)
710 {
712 }
713 else
714 {
716 }
717 return true;
718 case XmlBinaryNodeType.Bytes16Text:
719 if (_buffered)
720 {
722 }
723 else
724 {
726 }
727 return true;
728 case XmlBinaryNodeType.Bytes32TextWithEndElement:
729 if (_buffered)
730 {
732 }
733 else
734 {
736 }
737 return true;
738 case XmlBinaryNodeType.Bytes32Text:
739 if (_buffered)
740 {
742 }
743 else
744 {
746 }
747 return true;
748 case XmlBinaryNodeType.DictionaryTextWithEndElement:
750 return true;
751 case XmlBinaryNodeType.UniqueIdTextWithEndElement:
753 return true;
754 case XmlBinaryNodeType.GuidTextWithEndElement:
756 return true;
757 case XmlBinaryNodeType.DecimalTextWithEndElement:
759 return true;
760 case XmlBinaryNodeType.Int8TextWithEndElement:
762 return true;
763 case XmlBinaryNodeType.Int16TextWithEndElement:
765 return true;
766 case XmlBinaryNodeType.Int32TextWithEndElement:
768 return true;
769 case XmlBinaryNodeType.Int64TextWithEndElement:
771 return true;
772 case XmlBinaryNodeType.UInt64TextWithEndElement:
774 return true;
775 case XmlBinaryNodeType.FloatTextWithEndElement:
777 return true;
778 case XmlBinaryNodeType.DoubleTextWithEndElement:
780 return true;
781 case XmlBinaryNodeType.TimeSpanTextWithEndElement:
783 return true;
784 case XmlBinaryNodeType.DateTimeTextWithEndElement:
786 return true;
787 case XmlBinaryNodeType.QNameDictionaryTextWithEndElement:
788 base.BufferReader.ReadQName(MoveToAtomicTextWithEndElement().Value);
789 return true;
790 case XmlBinaryNodeType.Array:
791 ReadArray();
792 return true;
793 default:
794 base.BufferReader.ReadValue(xmlBinaryNodeType, MoveToComplexText().Value);
795 return true;
796 }
797 }
798
799 private void VerifyWhitespace()
800 {
801 if (!base.Node.Value.IsWhitespace())
802 {
804 }
805 }
806
807 private void ReadAttributes()
808 {
809 XmlBinaryNodeType nodeType = GetNodeType();
810 if (nodeType >= XmlBinaryNodeType.MinAttribute && nodeType <= XmlBinaryNodeType.PrefixAttributeZ)
811 {
813 }
814 }
815
816 private void ReadAttributes2()
817 {
818 int num = 0;
819 if (_buffered)
820 {
821 num = base.BufferReader.Offset;
822 }
823 while (true)
824 {
825 XmlBinaryNodeType nodeType = GetNodeType();
826 switch (nodeType)
827 {
828 case XmlBinaryNodeType.MinAttribute:
829 {
830 SkipNodeType();
832 xmlAttributeNode.Prefix.SetValue(PrefixHandleType.Empty);
833 ReadName(xmlAttributeNode.LocalName);
834 ReadAttributeText(xmlAttributeNode.AttributeText);
835 break;
836 }
837 case XmlBinaryNodeType.Attribute:
838 {
839 SkipNodeType();
842 ReadName(xmlAttributeNode.LocalName);
843 ReadAttributeText(xmlAttributeNode.AttributeText);
845 break;
846 }
847 case XmlBinaryNodeType.ShortDictionaryAttribute:
848 {
849 SkipNodeType();
851 xmlAttributeNode.Prefix.SetValue(PrefixHandleType.Empty);
853 ReadAttributeText(xmlAttributeNode.AttributeText);
854 break;
855 }
856 case XmlBinaryNodeType.DictionaryAttribute:
857 {
858 SkipNodeType();
862 ReadAttributeText(xmlAttributeNode.AttributeText);
863 break;
864 }
865 case XmlBinaryNodeType.XmlnsAttribute:
866 {
867 SkipNodeType();
868 Namespace @namespace = AddNamespace();
869 ReadName(@namespace.Prefix);
870 ReadName(@namespace.Uri);
872 break;
873 }
874 case XmlBinaryNodeType.ShortXmlnsAttribute:
875 {
876 SkipNodeType();
877 Namespace @namespace = AddNamespace();
878 @namespace.Prefix.SetValue(PrefixHandleType.Empty);
879 ReadName(@namespace.Uri);
881 break;
882 }
883 case XmlBinaryNodeType.ShortDictionaryXmlnsAttribute:
884 {
885 SkipNodeType();
886 Namespace @namespace = AddNamespace();
887 @namespace.Prefix.SetValue(PrefixHandleType.Empty);
888 ReadDictionaryName(@namespace.Uri);
890 break;
891 }
892 case XmlBinaryNodeType.DictionaryXmlnsAttribute:
893 {
894 SkipNodeType();
895 Namespace @namespace = AddNamespace();
896 ReadName(@namespace.Prefix);
897 ReadDictionaryName(@namespace.Uri);
899 break;
900 }
901 case XmlBinaryNodeType.PrefixDictionaryAttributeA:
902 case XmlBinaryNodeType.PrefixDictionaryAttributeB:
903 case XmlBinaryNodeType.PrefixDictionaryAttributeC:
904 case XmlBinaryNodeType.PrefixDictionaryAttributeD:
905 case XmlBinaryNodeType.PrefixDictionaryAttributeE:
906 case XmlBinaryNodeType.PrefixDictionaryAttributeF:
907 case XmlBinaryNodeType.PrefixDictionaryAttributeG:
908 case XmlBinaryNodeType.PrefixDictionaryAttributeH:
909 case XmlBinaryNodeType.PrefixDictionaryAttributeI:
910 case XmlBinaryNodeType.PrefixDictionaryAttributeJ:
911 case XmlBinaryNodeType.PrefixDictionaryAttributeK:
912 case XmlBinaryNodeType.PrefixDictionaryAttributeL:
913 case XmlBinaryNodeType.PrefixDictionaryAttributeM:
914 case XmlBinaryNodeType.PrefixDictionaryAttributeN:
915 case XmlBinaryNodeType.PrefixDictionaryAttributeO:
916 case XmlBinaryNodeType.PrefixDictionaryAttributeP:
917 case XmlBinaryNodeType.PrefixDictionaryAttributeQ:
918 case XmlBinaryNodeType.PrefixDictionaryAttributeR:
919 case XmlBinaryNodeType.PrefixDictionaryAttributeS:
920 case XmlBinaryNodeType.PrefixDictionaryAttributeT:
921 case XmlBinaryNodeType.PrefixDictionaryAttributeU:
922 case XmlBinaryNodeType.PrefixDictionaryAttributeV:
923 case XmlBinaryNodeType.PrefixDictionaryAttributeW:
924 case XmlBinaryNodeType.PrefixDictionaryAttributeX:
925 case XmlBinaryNodeType.PrefixDictionaryAttributeY:
926 case XmlBinaryNodeType.PrefixDictionaryAttributeZ:
927 {
928 SkipNodeType();
931 xmlAttributeNode.Prefix.SetValue(alphaPrefix);
933 ReadAttributeText(xmlAttributeNode.AttributeText);
934 break;
935 }
936 case XmlBinaryNodeType.PrefixAttributeA:
937 case XmlBinaryNodeType.PrefixAttributeB:
938 case XmlBinaryNodeType.PrefixAttributeC:
939 case XmlBinaryNodeType.PrefixAttributeD:
940 case XmlBinaryNodeType.PrefixAttributeE:
941 case XmlBinaryNodeType.PrefixAttributeF:
942 case XmlBinaryNodeType.PrefixAttributeG:
943 case XmlBinaryNodeType.PrefixAttributeH:
944 case XmlBinaryNodeType.PrefixAttributeI:
945 case XmlBinaryNodeType.PrefixAttributeJ:
946 case XmlBinaryNodeType.PrefixAttributeK:
947 case XmlBinaryNodeType.PrefixAttributeL:
948 case XmlBinaryNodeType.PrefixAttributeM:
949 case XmlBinaryNodeType.PrefixAttributeN:
950 case XmlBinaryNodeType.PrefixAttributeO:
951 case XmlBinaryNodeType.PrefixAttributeP:
952 case XmlBinaryNodeType.PrefixAttributeQ:
953 case XmlBinaryNodeType.PrefixAttributeR:
954 case XmlBinaryNodeType.PrefixAttributeS:
955 case XmlBinaryNodeType.PrefixAttributeT:
956 case XmlBinaryNodeType.PrefixAttributeU:
957 case XmlBinaryNodeType.PrefixAttributeV:
958 case XmlBinaryNodeType.PrefixAttributeW:
959 case XmlBinaryNodeType.PrefixAttributeX:
960 case XmlBinaryNodeType.PrefixAttributeY:
961 case XmlBinaryNodeType.PrefixAttributeZ:
962 {
963 SkipNodeType();
966 xmlAttributeNode.Prefix.SetValue(alphaPrefix);
967 ReadName(xmlAttributeNode.LocalName);
968 ReadAttributeText(xmlAttributeNode.AttributeText);
969 break;
970 }
971 default:
973 return;
974 }
975 }
976 }
977
979 {
980 int offset = base.BufferReader.ReadBytes(length);
981 textNode.Value.SetValue(type, offset, length);
982 if (base.OutsideRootElement)
983 {
985 }
986 }
987
989 {
991 }
992
994 {
995 int num = Math.Max(_maxBytesPerRead - 5, 0);
996 if (length <= num)
997 {
998 if (withEndElement)
999 {
1001 }
1002 else
1003 {
1005 }
1006 return;
1007 }
1008 int num2 = Math.Max(num - 5, 0);
1009 int num3 = base.BufferReader.ReadBytes(num2);
1010 int num4;
1011 for (num4 = num3 + num2 - 1; num4 >= num3; num4--)
1012 {
1013 byte @byte = base.BufferReader.GetByte(num4);
1014 if ((@byte & 0x80) == 0 || (@byte & 0xC0) == 192)
1015 {
1016 break;
1017 }
1018 }
1019 int num5 = num3 + num2 - num4;
1021 num2 -= num5;
1023 if (base.OutsideRootElement)
1024 {
1026 }
1028 InsertNode(nodeType, length - num2);
1029 }
1030
1031 private void ReadUnicodeText(bool withEndElement, int length)
1032 {
1033 if (((uint)length & (true ? 1u : 0u)) != 0)
1034 {
1036 }
1037 if (_buffered)
1038 {
1039 if (withEndElement)
1040 {
1042 }
1043 else
1044 {
1046 }
1047 }
1048 else
1049 {
1051 }
1052 }
1053
1055 {
1056 int num = Math.Max(_maxBytesPerRead - 5, 0);
1057 if (length <= num)
1058 {
1059 if (withEndElement)
1060 {
1062 }
1063 else
1064 {
1066 }
1067 return;
1068 }
1069 int num2 = Math.Max(num - 5, 0);
1070 if (((uint)num2 & (true ? 1u : 0u)) != 0)
1071 {
1072 num2--;
1073 }
1074 int num3 = base.BufferReader.ReadBytes(num2);
1075 int num4 = 0;
1076 char c = (char)base.BufferReader.GetInt16(num3 + num2 - 2);
1077 if (c >= '\ud800' && c < '\udc00')
1078 {
1079 num4 = 2;
1080 }
1082 num2 -= num4;
1084 if (base.OutsideRootElement)
1085 {
1087 }
1089 InsertNode(nodeType, length - num2);
1090 }
1091
1093 {
1094 int num = Math.Max(_maxBytesPerRead - 5, 0);
1095 if (length <= num)
1096 {
1097 if (withEndElement)
1098 {
1100 }
1101 else
1102 {
1104 }
1105 return;
1106 }
1107 int num2 = num;
1108 if (num2 > 3)
1109 {
1110 num2 -= num2 % 3;
1111 }
1114 InsertNode(nodeType, length - num2);
1115 }
1116
1117 private void InsertNode(XmlBinaryNodeType nodeType, int length)
1118 {
1119 byte[] array = new byte[5]
1120 {
1121 (byte)nodeType,
1122 (byte)length,
1123 0,
1124 0,
1125 0
1126 };
1127 length >>= 8;
1128 array[2] = (byte)length;
1129 length >>= 8;
1130 array[3] = (byte)length;
1131 length >>= 8;
1132 array[4] = (byte)length;
1133 base.BufferReader.InsertBytes(array, 0, array.Length);
1134 }
1135
1137 {
1138 XmlBinaryNodeType nodeType = GetNodeType();
1139 SkipNodeType();
1140 base.BufferReader.ReadValue(nodeType, textNode.Value);
1141 }
1142
1144 {
1145 int num = ReadMultiByteUInt31();
1146 int offset = base.BufferReader.ReadBytes(num);
1147 value.SetValue(ValueHandleType.UTF8, offset, num);
1148 }
1149
1151 {
1152 int num = ReadMultiByteUInt31();
1153 int offset = base.BufferReader.ReadBytes(num);
1154 handle.SetValue(offset, num);
1155 }
1156
1158 {
1159 int num = ReadMultiByteUInt31();
1160 int offset = base.BufferReader.ReadBytes(num);
1161 prefix.SetValue(offset, num);
1162 }
1163
1165 {
1166 int value = ReadDictionaryKey();
1167 s.SetValue(value);
1168 }
1169
1171 {
1172 return base.BufferReader.GetNodeType();
1173 }
1174
1175 private void SkipNodeType()
1176 {
1177 base.BufferReader.SkipNodeType();
1178 }
1179
1180 private int ReadDictionaryKey()
1181 {
1182 return base.BufferReader.ReadDictionaryKey();
1183 }
1184
1186 {
1187 return base.BufferReader.ReadMultiByteUInt31();
1188 }
1189
1190 private int ReadUInt8()
1191 {
1192 return base.BufferReader.ReadUInt8();
1193 }
1194
1195 private int ReadUInt16()
1196 {
1197 return base.BufferReader.ReadUInt16();
1198 }
1199
1200 private int ReadUInt31()
1201 {
1202 return base.BufferReader.ReadUInt31();
1203 }
1204
1206 {
1207 switch (nodeType)
1208 {
1209 case XmlBinaryNodeType.Int16TextWithEndElement:
1210 case XmlBinaryNodeType.Int32TextWithEndElement:
1211 case XmlBinaryNodeType.Int64TextWithEndElement:
1212 case XmlBinaryNodeType.FloatTextWithEndElement:
1213 case XmlBinaryNodeType.DoubleTextWithEndElement:
1214 case XmlBinaryNodeType.DecimalTextWithEndElement:
1215 case XmlBinaryNodeType.DateTimeTextWithEndElement:
1216 case XmlBinaryNodeType.TimeSpanTextWithEndElement:
1217 case XmlBinaryNodeType.GuidTextWithEndElement:
1218 case XmlBinaryNodeType.BoolTextWithEndElement:
1219 return true;
1220 default:
1221 return false;
1222 }
1223 }
1224
1225 private void ReadArray()
1226 {
1227 if (GetNodeType() == XmlBinaryNodeType.Array)
1228 {
1230 }
1231 ReadNode();
1232 if (base.Node.NodeType != XmlNodeType.Element)
1233 {
1235 }
1236 if (GetNodeType() == XmlBinaryNodeType.Array)
1237 {
1239 }
1240 ReadNode();
1241 if (base.Node.NodeType != XmlNodeType.EndElement)
1242 {
1244 }
1245 _arrayState = ArrayState.Element;
1248 {
1250 }
1251 SkipNodeType();
1253 if (_arrayCount == 0)
1254 {
1256 }
1258 }
1259
1260 private void MoveToArrayElement()
1261 {
1262 _arrayState = ArrayState.Element;
1263 MoveToNode(base.ElementNode);
1264 }
1265
1266 private void SkipArrayElements(int count)
1267 {
1268 _arrayCount -= count;
1269 if (_arrayCount == 0)
1270 {
1271 _arrayState = ArrayState.None;
1272 ExitScope();
1273 ReadNode();
1274 }
1275 }
1276
1277 public override bool IsStartArray([NotNullWhen(true)] out Type type)
1278 {
1279 type = null;
1280 if (_arrayState != ArrayState.Element)
1281 {
1282 return false;
1283 }
1284 switch (_arrayNodeType)
1285 {
1286 case XmlBinaryNodeType.BoolTextWithEndElement:
1287 type = typeof(bool);
1288 break;
1289 case XmlBinaryNodeType.Int16TextWithEndElement:
1290 type = typeof(short);
1291 break;
1292 case XmlBinaryNodeType.Int32TextWithEndElement:
1293 type = typeof(int);
1294 break;
1295 case XmlBinaryNodeType.Int64TextWithEndElement:
1296 type = typeof(long);
1297 break;
1298 case XmlBinaryNodeType.FloatTextWithEndElement:
1299 type = typeof(float);
1300 break;
1301 case XmlBinaryNodeType.DoubleTextWithEndElement:
1302 type = typeof(double);
1303 break;
1304 case XmlBinaryNodeType.DecimalTextWithEndElement:
1305 type = typeof(decimal);
1306 break;
1307 case XmlBinaryNodeType.DateTimeTextWithEndElement:
1308 type = typeof(DateTime);
1309 break;
1310 case XmlBinaryNodeType.GuidTextWithEndElement:
1311 type = typeof(Guid);
1312 break;
1313 case XmlBinaryNodeType.TimeSpanTextWithEndElement:
1314 type = typeof(TimeSpan);
1315 break;
1316 case XmlBinaryNodeType.UniqueIdTextWithEndElement:
1317 type = typeof(UniqueId);
1318 break;
1319 default:
1320 return false;
1321 }
1322 return true;
1323 }
1324
1325 public override bool TryGetArrayLength(out int count)
1326 {
1327 count = 0;
1328 if (!_buffered)
1329 {
1330 return false;
1331 }
1332 if (_arrayState != ArrayState.Element)
1333 {
1334 return false;
1335 }
1337 return true;
1338 }
1339
1340 private bool IsStartArray(string localName, string namespaceUri, XmlBinaryNodeType nodeType)
1341 {
1342 if (IsStartElement(localName, namespaceUri) && _arrayState == ArrayState.Element && _arrayNodeType == nodeType)
1343 {
1344 return !base.Signing;
1345 }
1346 return false;
1347 }
1348
1349 private bool IsStartArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, XmlBinaryNodeType nodeType)
1350 {
1351 if (IsStartElement(localName, namespaceUri) && _arrayState == ArrayState.Element && _arrayNodeType == nodeType)
1352 {
1353 return !base.Signing;
1354 }
1355 return false;
1356 }
1357
1381
1382 private unsafe int ReadArray(bool[] array, int offset, int count)
1383 {
1385 int num = Math.Min(count, _arrayCount);
1386 fixed (bool* ptr = &array[offset])
1387 {
1388 base.BufferReader.UnsafeReadArray((byte*)ptr, (byte*)(ptr + num));
1389 }
1390 SkipArrayElements(num);
1391 return num;
1392 }
1393
1394 public override int ReadArray(string localName, string namespaceUri, bool[] array, int offset, int count)
1395 {
1396 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.BoolTextWithEndElement))
1397 {
1398 return ReadArray(array, offset, count);
1399 }
1400 return base.ReadArray(localName, namespaceUri, array, offset, count);
1401 }
1402
1403 public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, bool[] array, int offset, int count)
1404 {
1405 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.BoolTextWithEndElement))
1406 {
1407 return ReadArray(array, offset, count);
1408 }
1409 return base.ReadArray(localName, namespaceUri, array, offset, count);
1410 }
1411
1412 private unsafe int ReadArray(short[] array, int offset, int count)
1413 {
1415 int num = Math.Min(count, _arrayCount);
1416 fixed (short* ptr = &array[offset])
1417 {
1418 base.BufferReader.UnsafeReadArray((byte*)ptr, (byte*)(ptr + num));
1419 }
1420 SkipArrayElements(num);
1421 return num;
1422 }
1423
1424 public override int ReadArray(string localName, string namespaceUri, short[] array, int offset, int count)
1425 {
1426 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.Int16TextWithEndElement) && BitConverter.IsLittleEndian)
1427 {
1428 return ReadArray(array, offset, count);
1429 }
1430 return base.ReadArray(localName, namespaceUri, array, offset, count);
1431 }
1432
1433 public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, short[] array, int offset, int count)
1434 {
1435 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.Int16TextWithEndElement) && BitConverter.IsLittleEndian)
1436 {
1437 return ReadArray(array, offset, count);
1438 }
1439 return base.ReadArray(localName, namespaceUri, array, offset, count);
1440 }
1441
1442 private unsafe int ReadArray(int[] array, int offset, int count)
1443 {
1445 int num = Math.Min(count, _arrayCount);
1446 fixed (int* ptr = &array[offset])
1447 {
1448 base.BufferReader.UnsafeReadArray((byte*)ptr, (byte*)(ptr + num));
1449 }
1450 SkipArrayElements(num);
1451 return num;
1452 }
1453
1454 public override int ReadArray(string localName, string namespaceUri, int[] array, int offset, int count)
1455 {
1456 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.Int32TextWithEndElement) && BitConverter.IsLittleEndian)
1457 {
1458 return ReadArray(array, offset, count);
1459 }
1460 return base.ReadArray(localName, namespaceUri, array, offset, count);
1461 }
1462
1463 public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, int[] array, int offset, int count)
1464 {
1465 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.Int32TextWithEndElement) && BitConverter.IsLittleEndian)
1466 {
1467 return ReadArray(array, offset, count);
1468 }
1469 return base.ReadArray(localName, namespaceUri, array, offset, count);
1470 }
1471
1472 private unsafe int ReadArray(long[] array, int offset, int count)
1473 {
1475 int num = Math.Min(count, _arrayCount);
1476 fixed (long* ptr = &array[offset])
1477 {
1478 base.BufferReader.UnsafeReadArray((byte*)ptr, (byte*)(ptr + num));
1479 }
1480 SkipArrayElements(num);
1481 return num;
1482 }
1483
1484 public override int ReadArray(string localName, string namespaceUri, long[] array, int offset, int count)
1485 {
1486 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.Int64TextWithEndElement) && BitConverter.IsLittleEndian)
1487 {
1488 return ReadArray(array, offset, count);
1489 }
1490 return base.ReadArray(localName, namespaceUri, array, offset, count);
1491 }
1492
1493 public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, long[] array, int offset, int count)
1494 {
1495 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.Int64TextWithEndElement) && BitConverter.IsLittleEndian)
1496 {
1497 return ReadArray(array, offset, count);
1498 }
1499 return base.ReadArray(localName, namespaceUri, array, offset, count);
1500 }
1501
1502 private unsafe int ReadArray(float[] array, int offset, int count)
1503 {
1505 int num = Math.Min(count, _arrayCount);
1506 fixed (float* ptr = &array[offset])
1507 {
1508 base.BufferReader.UnsafeReadArray((byte*)ptr, (byte*)(ptr + num));
1509 }
1510 SkipArrayElements(num);
1511 return num;
1512 }
1513
1514 public override int ReadArray(string localName, string namespaceUri, float[] array, int offset, int count)
1515 {
1516 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.FloatTextWithEndElement))
1517 {
1518 return ReadArray(array, offset, count);
1519 }
1520 return base.ReadArray(localName, namespaceUri, array, offset, count);
1521 }
1522
1523 public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, float[] array, int offset, int count)
1524 {
1525 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.FloatTextWithEndElement))
1526 {
1527 return ReadArray(array, offset, count);
1528 }
1529 return base.ReadArray(localName, namespaceUri, array, offset, count);
1530 }
1531
1532 private unsafe int ReadArray(double[] array, int offset, int count)
1533 {
1535 int num = Math.Min(count, _arrayCount);
1536 fixed (double* ptr = &array[offset])
1537 {
1538 base.BufferReader.UnsafeReadArray((byte*)ptr, (byte*)(ptr + num));
1539 }
1540 SkipArrayElements(num);
1541 return num;
1542 }
1543
1544 public override int ReadArray(string localName, string namespaceUri, double[] array, int offset, int count)
1545 {
1546 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DoubleTextWithEndElement))
1547 {
1548 return ReadArray(array, offset, count);
1549 }
1550 return base.ReadArray(localName, namespaceUri, array, offset, count);
1551 }
1552
1553 public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, double[] array, int offset, int count)
1554 {
1555 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DoubleTextWithEndElement))
1556 {
1557 return ReadArray(array, offset, count);
1558 }
1559 return base.ReadArray(localName, namespaceUri, array, offset, count);
1560 }
1561
1562 private unsafe int ReadArray(decimal[] array, int offset, int count)
1563 {
1565 int num = Math.Min(count, _arrayCount);
1566 fixed (decimal* ptr = &array[offset])
1567 {
1568 base.BufferReader.UnsafeReadArray((byte*)ptr, (byte*)(ptr + num));
1569 }
1570 SkipArrayElements(num);
1571 return num;
1572 }
1573
1574 public override int ReadArray(string localName, string namespaceUri, decimal[] array, int offset, int count)
1575 {
1576 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DecimalTextWithEndElement))
1577 {
1578 return ReadArray(array, offset, count);
1579 }
1580 return base.ReadArray(localName, namespaceUri, array, offset, count);
1581 }
1582
1583 public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, decimal[] array, int offset, int count)
1584 {
1585 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DecimalTextWithEndElement))
1586 {
1587 return ReadArray(array, offset, count);
1588 }
1589 return base.ReadArray(localName, namespaceUri, array, offset, count);
1590 }
1591
1592 private int ReadArray(DateTime[] array, int offset, int count)
1593 {
1595 int num = Math.Min(count, _arrayCount);
1596 for (int i = 0; i < num; i++)
1597 {
1598 array[offset + i] = base.BufferReader.ReadDateTime();
1599 }
1600 SkipArrayElements(num);
1601 return num;
1602 }
1603
1604 public override int ReadArray(string localName, string namespaceUri, DateTime[] array, int offset, int count)
1605 {
1606 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DateTimeTextWithEndElement))
1607 {
1608 return ReadArray(array, offset, count);
1609 }
1610 return base.ReadArray(localName, namespaceUri, array, offset, count);
1611 }
1612
1613 public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, DateTime[] array, int offset, int count)
1614 {
1615 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.DateTimeTextWithEndElement))
1616 {
1617 return ReadArray(array, offset, count);
1618 }
1619 return base.ReadArray(localName, namespaceUri, array, offset, count);
1620 }
1621
1622 private int ReadArray(Guid[] array, int offset, int count)
1623 {
1625 int num = Math.Min(count, _arrayCount);
1626 for (int i = 0; i < num; i++)
1627 {
1628 array[offset + i] = base.BufferReader.ReadGuid();
1629 }
1630 SkipArrayElements(num);
1631 return num;
1632 }
1633
1634 public override int ReadArray(string localName, string namespaceUri, Guid[] array, int offset, int count)
1635 {
1636 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.GuidTextWithEndElement))
1637 {
1638 return ReadArray(array, offset, count);
1639 }
1640 return base.ReadArray(localName, namespaceUri, array, offset, count);
1641 }
1642
1643 public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, Guid[] array, int offset, int count)
1644 {
1645 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.GuidTextWithEndElement))
1646 {
1647 return ReadArray(array, offset, count);
1648 }
1649 return base.ReadArray(localName, namespaceUri, array, offset, count);
1650 }
1651
1652 private int ReadArray(TimeSpan[] array, int offset, int count)
1653 {
1655 int num = Math.Min(count, _arrayCount);
1656 for (int i = 0; i < num; i++)
1657 {
1658 array[offset + i] = base.BufferReader.ReadTimeSpan();
1659 }
1660 SkipArrayElements(num);
1661 return num;
1662 }
1663
1664 public override int ReadArray(string localName, string namespaceUri, TimeSpan[] array, int offset, int count)
1665 {
1666 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.TimeSpanTextWithEndElement))
1667 {
1668 return ReadArray(array, offset, count);
1669 }
1670 return base.ReadArray(localName, namespaceUri, array, offset, count);
1671 }
1672
1673 public override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, TimeSpan[] array, int offset, int count)
1674 {
1675 if (IsStartArray(localName, namespaceUri, XmlBinaryNodeType.TimeSpanTextWithEndElement))
1676 {
1677 return ReadArray(array, offset, count);
1678 }
1679 return base.ReadArray(localName, namespaceUri, array, offset, count);
1680 }
1681
1683 {
1684 return new XmlSigningNodeWriter(text: false);
1685 }
1686}
static readonly bool IsLittleEndian
static byte Min(byte val1, byte val2)
Definition Math.cs:912
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string ValueMustBeNonNegative
Definition SR.cs:296
static string SizeExceedsRemainingBufferSpace
Definition SR.cs:324
static string OffsetExceedsBufferSize
Definition SR.cs:322
Definition SR.cs:7
void SetValue(PrefixHandleType type)
static PrefixHandleType GetAlphaPrefix(int index)
void SetValue(ValueHandleType type)
void SetDictionaryValue(int key)
override string LookupNamespace(string prefix)
XmlComplexTextNode MoveToComplexText()
XmlCommentNode MoveToComment()
void MoveToNode(XmlNode node)
XmlAtomicTextNode MoveToAtomicText()
void FixXmlAttribute(XmlAttributeNode attributeNode)
override XmlDictionaryReaderQuotas Quotas
XmlAttributeNode AddXmlnsAttribute(Namespace ns)
XmlAttributeNode AddAttribute()
override bool IsStartElement()
XmlElementNode EnterScope()
unsafe int ReadArray(bool[] array, int offset, int count)
override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, bool[] array, int offset, int count)
void ReadName(PrefixHandle prefix)
int ReadArray(Guid[] array, int offset, int count)
override int ReadArray(string localName, string namespaceUri, int[] array, int offset, int count)
void ReadAttributeText(XmlAttributeTextNode textNode)
bool IsValidArrayType(XmlBinaryNodeType nodeType)
unsafe int ReadArray(double[] array, int offset, int count)
override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, TimeSpan[] array, int offset, int count)
void SetInput(byte[] buffer, int offset, int count, IXmlDictionary dictionary, XmlDictionaryReaderQuotas quotas, XmlBinaryReaderSession session, OnXmlDictionaryReaderClose onClose)
override int ReadArray(string localName, string namespaceUri, DateTime[] array, int offset, int count)
void ReadName(ValueHandle value)
override DateTime ReadElementContentAsDateTime()
override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, Guid[] array, int offset, int count)
override int ReadArray(string localName, string namespaceUri, bool[] array, int offset, int count)
override XmlSigningNodeWriter CreateSigningNodeWriter()
override double ReadElementContentAsDouble()
override Guid ReadElementContentAsGuid()
override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, decimal[] array, int offset, int count)
override bool ReadElementContentAsBoolean()
override bool IsStartArray([NotNullWhen(true)] out Type type)
override int ReadArray(string localName, string namespaceUri, decimal[] array, int offset, int count)
override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, DateTime[] array, int offset, int count)
bool IsStartArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, XmlBinaryNodeType nodeType)
XmlBinaryNodeType _arrayNodeType
void ReadName(StringHandle handle)
override decimal ReadElementContentAsDecimal()
unsafe int ReadArray(float[] array, int offset, int count)
override int ReadArray(string localName, string namespaceUri, double[] array, int offset, int count)
void InsertNode(XmlBinaryNodeType nodeType, int length)
void MoveToInitial(XmlDictionaryReaderQuotas quotas, XmlBinaryReaderSession session, OnXmlDictionaryReaderClose onClose)
override float ReadElementContentAsFloat()
void ReadUnicodeText(bool withEndElement, int length)
override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, int[] array, int offset, int count)
void ReadDictionaryName(StringHandle s)
XmlBinaryNodeType GetNodeType()
unsafe int ReadArray(int[] array, int offset, int count)
unsafe int ReadArray(short[] array, int offset, int count)
override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, double[] array, int offset, int count)
void ReadPartialUnicodeText(bool withEndElement, int length)
override int ReadArray(string localName, string namespaceUri, TimeSpan[] array, int offset, int count)
void ReadText(XmlTextNode textNode, ValueHandleType type, int length)
unsafe int ReadArray(long[] array, int offset, int count)
override int ReadElementContentAsInt()
override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, long[] array, int offset, int count)
override int ReadArray(string localName, string namespaceUri, short[] array, int offset, int count)
override int ReadArray(string localName, string namespaceUri, Guid[] array, int offset, int count)
void CheckArray(Array array, int offset, int count)
int ReadArray(DateTime[] array, int offset, int count)
override int ReadArray(string localName, string namespaceUri, long[] array, int offset, int count)
int ReadArray(TimeSpan[] array, int offset, int count)
override int ReadArray(string localName, string namespaceUri, float[] array, int offset, int count)
override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, float[] array, int offset, int count)
XmlAtomicTextNode MoveToAtomicTextWithEndElement()
override UniqueId ReadElementContentAsUniqueId()
void ReadBinaryText(XmlTextNode textNode, int length)
void SetInput(Stream stream, IXmlDictionary dictionary, XmlDictionaryReaderQuotas quotas, XmlBinaryReaderSession session, OnXmlDictionaryReaderClose onClose)
void ReadPartialBinaryText(bool withEndElement, int length)
override bool TryGetBase64ContentLength(out int length)
unsafe int ReadArray(decimal[] array, int offset, int count)
bool IsStartArray(string localName, string namespaceUri, XmlBinaryNodeType nodeType)
override string ReadElementContentAsString()
void ReadPartialUTF8Text(bool withEndElement, int length)
override bool TryGetArrayLength(out int count)
override TimeSpan ReadElementContentAsTimeSpan()
override int ReadArray(XmlDictionaryString localName, XmlDictionaryString namespaceUri, short[] array, int offset, int count)
static void ThrowMaxStringContentLengthExceeded(XmlDictionaryReader reader, int maxStringContentLength)
static void ThrowInvalidBinaryFormat(XmlDictionaryReader reader)