2 #pragma warning disable 612
4 using System.Collections.Generic;
8 public abstract partial class XmlDictionaryReader : XmlReader
10 static readonly char [] wsChars = new char [] {' ', '\t', '\n', '\r'};
12 void CheckReadArrayArguments (Array array, int offset, int length)
15 throw new ArgumentNullException ("array");
17 throw new ArgumentOutOfRangeException ("offset is negative");
18 if (offset > array.Length)
19 throw new ArgumentOutOfRangeException ("offset exceeds the length of the destination array");
21 throw new ArgumentOutOfRangeException ("length is negative");
22 if (length > array.Length - offset)
23 throw new ArgumentOutOfRangeException ("length + offset exceeds the length of the destination array");
26 void CheckDictionaryStringArgs (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
28 if (localName == null)
29 throw new ArgumentNullException ("localName");
30 if (namespaceUri == null)
31 throw new ArgumentNullException ("namespaceUri");
35 public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, bool [] array, int offset, int length)
37 CheckDictionaryStringArgs (localName, namespaceUri);
38 return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
41 public virtual int ReadArray (string localName, string namespaceUri, bool [] array, int offset, int length)
43 CheckReadArrayArguments (array, offset, length);
44 for (int i = 0; i < length; i++) {
46 if (NodeType != XmlNodeType.Element)
48 ReadStartElement (localName, namespaceUri);
49 array [offset + i] = XmlConvert.ToBoolean (ReadContentAsString ());
55 public virtual bool [] ReadBooleanArray (string localName, string namespaceUri)
57 List<bool> list = new List<bool> ();
60 if (NodeType != XmlNodeType.Element)
62 ReadStartElement (localName, namespaceUri);
63 list.Add (XmlConvert.ToBoolean (ReadContentAsString ()));
65 if (list.Count == Quotas.MaxArrayLength)
66 // FIXME: check if raises an error or not
69 return list.ToArray ();
72 public virtual bool [] ReadBooleanArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
74 CheckDictionaryStringArgs (localName, namespaceUri);
75 return ReadBooleanArray (localName.Value, namespaceUri.Value);
78 public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, DateTime [] array, int offset, int length)
80 CheckDictionaryStringArgs (localName, namespaceUri);
81 return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
84 public virtual int ReadArray (string localName, string namespaceUri, DateTime [] array, int offset, int length)
86 CheckReadArrayArguments (array, offset, length);
87 for (int i = 0; i < length; i++) {
89 if (NodeType != XmlNodeType.Element)
91 ReadStartElement (localName, namespaceUri);
92 array [offset + i] = XmlConvert.ToDateTime (ReadContentAsString ());
98 public virtual DateTime [] ReadDateTimeArray (string localName, string namespaceUri)
100 List<DateTime> list = new List<DateTime> ();
103 if (NodeType != XmlNodeType.Element)
105 ReadStartElement (localName, namespaceUri);
106 list.Add (XmlConvert.ToDateTime (ReadContentAsString ()));
108 if (list.Count == Quotas.MaxArrayLength)
109 // FIXME: check if raises an error or not
112 return list.ToArray ();
115 public virtual DateTime [] ReadDateTimeArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
117 CheckDictionaryStringArgs (localName, namespaceUri);
118 return ReadDateTimeArray (localName.Value, namespaceUri.Value);
121 public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, decimal [] array, int offset, int length)
123 CheckDictionaryStringArgs (localName, namespaceUri);
124 return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
127 public virtual int ReadArray (string localName, string namespaceUri, decimal [] array, int offset, int length)
129 CheckReadArrayArguments (array, offset, length);
130 for (int i = 0; i < length; i++) {
132 if (NodeType != XmlNodeType.Element)
134 ReadStartElement (localName, namespaceUri);
135 array [offset + i] = XmlConvert.ToDecimal (ReadContentAsString ());
141 public virtual decimal [] ReadDecimalArray (string localName, string namespaceUri)
143 List<decimal> list = new List<decimal> ();
146 if (NodeType != XmlNodeType.Element)
148 ReadStartElement (localName, namespaceUri);
149 list.Add (XmlConvert.ToDecimal (ReadContentAsString ()));
151 if (list.Count == Quotas.MaxArrayLength)
152 // FIXME: check if raises an error or not
155 return list.ToArray ();
158 public virtual decimal [] ReadDecimalArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
160 CheckDictionaryStringArgs (localName, namespaceUri);
161 return ReadDecimalArray (localName.Value, namespaceUri.Value);
164 public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, double [] array, int offset, int length)
166 CheckDictionaryStringArgs (localName, namespaceUri);
167 return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
170 public virtual int ReadArray (string localName, string namespaceUri, double [] array, int offset, int length)
172 CheckReadArrayArguments (array, offset, length);
173 for (int i = 0; i < length; i++) {
175 if (NodeType != XmlNodeType.Element)
177 ReadStartElement (localName, namespaceUri);
178 array [offset + i] = XmlConvert.ToDouble (ReadContentAsString ());
184 public virtual double [] ReadDoubleArray (string localName, string namespaceUri)
186 List<double> list = new List<double> ();
189 if (NodeType != XmlNodeType.Element)
191 ReadStartElement (localName, namespaceUri);
192 list.Add (XmlConvert.ToDouble (ReadContentAsString ()));
194 if (list.Count == Quotas.MaxArrayLength)
195 // FIXME: check if raises an error or not
198 return list.ToArray ();
201 public virtual double [] ReadDoubleArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
203 CheckDictionaryStringArgs (localName, namespaceUri);
204 return ReadDoubleArray (localName.Value, namespaceUri.Value);
207 public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, Guid [] array, int offset, int length)
209 CheckDictionaryStringArgs (localName, namespaceUri);
210 return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
213 public virtual int ReadArray (string localName, string namespaceUri, Guid [] array, int offset, int length)
215 CheckReadArrayArguments (array, offset, length);
216 for (int i = 0; i < length; i++) {
218 if (NodeType != XmlNodeType.Element)
220 ReadStartElement (localName, namespaceUri);
221 array [offset + i] = XmlConvert.ToGuid (ReadContentAsString ());
227 public virtual Guid [] ReadGuidArray (string localName, string namespaceUri)
229 List<Guid> list = new List<Guid> ();
232 if (NodeType != XmlNodeType.Element)
234 ReadStartElement (localName, namespaceUri);
235 list.Add (XmlConvert.ToGuid (ReadContentAsString ()));
237 if (list.Count == Quotas.MaxArrayLength)
238 // FIXME: check if raises an error or not
241 return list.ToArray ();
244 public virtual Guid [] ReadGuidArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
246 CheckDictionaryStringArgs (localName, namespaceUri);
247 return ReadGuidArray (localName.Value, namespaceUri.Value);
250 public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, short [] array, int offset, int length)
252 CheckDictionaryStringArgs (localName, namespaceUri);
253 return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
256 public virtual int ReadArray (string localName, string namespaceUri, short [] array, int offset, int length)
258 CheckReadArrayArguments (array, offset, length);
259 for (int i = 0; i < length; i++) {
261 if (NodeType != XmlNodeType.Element)
263 ReadStartElement (localName, namespaceUri);
264 array [offset + i] = XmlConvert.ToInt16 (ReadContentAsString ());
270 public virtual short [] ReadInt16Array (string localName, string namespaceUri)
272 List<short> list = new List<short> ();
275 if (NodeType != XmlNodeType.Element)
277 ReadStartElement (localName, namespaceUri);
278 list.Add (XmlConvert.ToInt16 (ReadContentAsString ()));
280 if (list.Count == Quotas.MaxArrayLength)
281 // FIXME: check if raises an error or not
284 return list.ToArray ();
287 public virtual short [] ReadInt16Array (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
289 CheckDictionaryStringArgs (localName, namespaceUri);
290 return ReadInt16Array (localName.Value, namespaceUri.Value);
293 public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, int [] array, int offset, int length)
295 CheckDictionaryStringArgs (localName, namespaceUri);
296 return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
299 public virtual int ReadArray (string localName, string namespaceUri, int [] array, int offset, int length)
301 CheckReadArrayArguments (array, offset, length);
302 for (int i = 0; i < length; i++) {
304 if (NodeType != XmlNodeType.Element)
306 ReadStartElement (localName, namespaceUri);
307 array [offset + i] = XmlConvert.ToInt32 (ReadContentAsString ());
313 public virtual int [] ReadInt32Array (string localName, string namespaceUri)
315 List<int> list = new List<int> ();
318 if (NodeType != XmlNodeType.Element)
320 ReadStartElement (localName, namespaceUri);
321 list.Add (XmlConvert.ToInt32 (ReadContentAsString ()));
323 if (list.Count == Quotas.MaxArrayLength)
324 // FIXME: check if raises an error or not
327 return list.ToArray ();
330 public virtual int [] ReadInt32Array (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
332 CheckDictionaryStringArgs (localName, namespaceUri);
333 return ReadInt32Array (localName.Value, namespaceUri.Value);
336 public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, long [] array, int offset, int length)
338 CheckDictionaryStringArgs (localName, namespaceUri);
339 return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
342 public virtual int ReadArray (string localName, string namespaceUri, long [] array, int offset, int length)
344 CheckReadArrayArguments (array, offset, length);
345 for (int i = 0; i < length; i++) {
347 if (NodeType != XmlNodeType.Element)
349 ReadStartElement (localName, namespaceUri);
350 array [offset + i] = XmlConvert.ToInt64 (ReadContentAsString ());
356 public virtual long [] ReadInt64Array (string localName, string namespaceUri)
358 List<long> list = new List<long> ();
361 if (NodeType != XmlNodeType.Element)
363 ReadStartElement (localName, namespaceUri);
364 list.Add (XmlConvert.ToInt64 (ReadContentAsString ()));
366 if (list.Count == Quotas.MaxArrayLength)
367 // FIXME: check if raises an error or not
370 return list.ToArray ();
373 public virtual long [] ReadInt64Array (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
375 CheckDictionaryStringArgs (localName, namespaceUri);
376 return ReadInt64Array (localName.Value, namespaceUri.Value);
379 public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, float [] array, int offset, int length)
381 CheckDictionaryStringArgs (localName, namespaceUri);
382 return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
385 public virtual int ReadArray (string localName, string namespaceUri, float [] array, int offset, int length)
387 CheckReadArrayArguments (array, offset, length);
388 for (int i = 0; i < length; i++) {
390 if (NodeType != XmlNodeType.Element)
392 ReadStartElement (localName, namespaceUri);
393 array [offset + i] = XmlConvert.ToSingle (ReadContentAsString ());
399 public virtual float [] ReadSingleArray (string localName, string namespaceUri)
401 List<float> list = new List<float> ();
404 if (NodeType != XmlNodeType.Element)
406 ReadStartElement (localName, namespaceUri);
407 list.Add (XmlConvert.ToSingle (ReadContentAsString ()));
409 if (list.Count == Quotas.MaxArrayLength)
410 // FIXME: check if raises an error or not
413 return list.ToArray ();
416 public virtual float [] ReadSingleArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
418 CheckDictionaryStringArgs (localName, namespaceUri);
419 return ReadSingleArray (localName.Value, namespaceUri.Value);
422 public virtual int ReadArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri, TimeSpan [] array, int offset, int length)
424 CheckDictionaryStringArgs (localName, namespaceUri);
425 return ReadArray (localName.Value, namespaceUri.Value, array, offset, length);
428 public virtual int ReadArray (string localName, string namespaceUri, TimeSpan [] array, int offset, int length)
430 CheckReadArrayArguments (array, offset, length);
431 for (int i = 0; i < length; i++) {
433 if (NodeType != XmlNodeType.Element)
435 ReadStartElement (localName, namespaceUri);
436 array [offset + i] = XmlConvert.ToTimeSpan (ReadContentAsString ());
442 public virtual TimeSpan [] ReadTimeSpanArray (string localName, string namespaceUri)
444 List<TimeSpan> list = new List<TimeSpan> ();
447 if (NodeType != XmlNodeType.Element)
449 ReadStartElement (localName, namespaceUri);
450 list.Add (XmlConvert.ToTimeSpan (ReadContentAsString ()));
452 if (list.Count == Quotas.MaxArrayLength)
453 // FIXME: check if raises an error or not
456 return list.ToArray ();
459 public virtual TimeSpan [] ReadTimeSpanArray (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
461 CheckDictionaryStringArgs (localName, namespaceUri);
462 return ReadTimeSpanArray (localName.Value, namespaceUri.Value);
465 public override bool ReadElementContentAsBoolean ()
467 ReadStartElement (LocalName, NamespaceURI);
468 bool ret = ReadContentAsBoolean ();
473 public override DateTime ReadElementContentAsDateTime ()
475 ReadStartElement (LocalName, NamespaceURI);
476 DateTime ret = ReadContentAsDateTime ();
481 public override decimal ReadElementContentAsDecimal ()
483 ReadStartElement (LocalName, NamespaceURI);
484 decimal ret = ReadContentAsDecimal ();
489 public override double ReadElementContentAsDouble ()
491 ReadStartElement (LocalName, NamespaceURI);
492 double ret = ReadContentAsDouble ();
497 public override float ReadElementContentAsFloat ()
499 ReadStartElement (LocalName, NamespaceURI);
500 float ret = ReadContentAsFloat ();
505 public override int ReadElementContentAsInt ()
507 ReadStartElement (LocalName, NamespaceURI);
508 int ret = ReadContentAsInt ();
513 public override long ReadElementContentAsLong ()
515 ReadStartElement (LocalName, NamespaceURI);
516 long ret = ReadContentAsLong ();