3 using BF = System.Xml.XmlBinaryFormat;
7 internal partial class XmlBinaryDictionaryWriter : XmlDictionaryWriter
9 void CheckWriteArrayArguments (Array array, int offset, int length)
12 throw new ArgumentNullException ("array");
14 throw new ArgumentOutOfRangeException ("offset is negative");
15 if (offset > array.Length)
16 throw new ArgumentOutOfRangeException ("offset exceeds the length of the destination array");
18 throw new ArgumentOutOfRangeException ("length is negative");
19 if (length > array.Length - offset)
20 throw new ArgumentOutOfRangeException ("length + offset exceeds the length of the destination array");
23 void CheckDictionaryStringArgs (XmlDictionaryString localName, XmlDictionaryString namespaceUri)
25 if (localName == null)
26 throw new ArgumentNullException ("localName");
27 if (namespaceUri == null)
28 throw new ArgumentNullException ("namespaceUri");
33 public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, bool [] array, int offset, int length)
35 CheckDictionaryStringArgs (localName, namespaceUri);
36 writer.Write (BF.Array);
37 WriteStartElement (prefix, localName, namespaceUri);
39 WriteArrayRemaining (array, offset, length);
42 public override void WriteArray (string prefix, string localName, string namespaceUri, bool [] array, int offset, int length)
44 CheckWriteArrayArguments (array, offset, length);
45 writer.Write (BF.Array);
46 WriteStartElement (prefix, localName, namespaceUri);
48 WriteArrayRemaining (array, offset, length);
51 void WriteArrayRemaining (bool [] array, int offset, int length)
53 writer.Write ((byte) 0xB5); // ident
54 writer.WriteFlexibleInt (length);
55 for (int i = offset; i < offset + length; i++)
56 WriteValueContent (array [i]);
60 public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, DateTime [] array, int offset, int length)
62 CheckDictionaryStringArgs (localName, namespaceUri);
63 writer.Write (BF.Array);
64 WriteStartElement (prefix, localName, namespaceUri);
66 WriteArrayRemaining (array, offset, length);
69 public override void WriteArray (string prefix, string localName, string namespaceUri, DateTime [] array, int offset, int length)
71 CheckWriteArrayArguments (array, offset, length);
72 writer.Write (BF.Array);
73 WriteStartElement (prefix, localName, namespaceUri);
75 WriteArrayRemaining (array, offset, length);
78 void WriteArrayRemaining (DateTime [] array, int offset, int length)
80 writer.Write ((byte) 0x97); // ident
81 writer.WriteFlexibleInt (length);
82 for (int i = offset; i < offset + length; i++)
83 WriteValueContent (array [i]);
87 public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, decimal [] array, int offset, int length)
89 CheckDictionaryStringArgs (localName, namespaceUri);
90 writer.Write (BF.Array);
91 WriteStartElement (prefix, localName, namespaceUri);
93 WriteArrayRemaining (array, offset, length);
96 public override void WriteArray (string prefix, string localName, string namespaceUri, decimal [] array, int offset, int length)
98 CheckWriteArrayArguments (array, offset, length);
99 writer.Write (BF.Array);
100 WriteStartElement (prefix, localName, namespaceUri);
102 WriteArrayRemaining (array, offset, length);
105 void WriteArrayRemaining (decimal [] array, int offset, int length)
107 writer.Write ((byte) 0x95); // ident
108 writer.WriteFlexibleInt (length);
109 for (int i = offset; i < offset + length; i++)
110 WriteValueContent (array [i]);
114 public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, double [] array, int offset, int length)
116 CheckDictionaryStringArgs (localName, namespaceUri);
117 writer.Write (BF.Array);
118 WriteStartElement (prefix, localName, namespaceUri);
120 WriteArrayRemaining (array, offset, length);
123 public override void WriteArray (string prefix, string localName, string namespaceUri, double [] array, int offset, int length)
125 CheckWriteArrayArguments (array, offset, length);
126 writer.Write (BF.Array);
127 WriteStartElement (prefix, localName, namespaceUri);
129 WriteArrayRemaining (array, offset, length);
132 void WriteArrayRemaining (double [] array, int offset, int length)
134 writer.Write ((byte) 0x93); // ident
135 writer.WriteFlexibleInt (length);
136 for (int i = offset; i < offset + length; i++)
137 WriteValueContent (array [i]);
141 public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, Guid [] array, int offset, int length)
143 CheckDictionaryStringArgs (localName, namespaceUri);
144 writer.Write (BF.Array);
145 WriteStartElement (prefix, localName, namespaceUri);
147 WriteArrayRemaining (array, offset, length);
150 public override void WriteArray (string prefix, string localName, string namespaceUri, Guid [] array, int offset, int length)
152 CheckWriteArrayArguments (array, offset, length);
153 writer.Write (BF.Array);
154 WriteStartElement (prefix, localName, namespaceUri);
156 WriteArrayRemaining (array, offset, length);
159 void WriteArrayRemaining (Guid [] array, int offset, int length)
161 writer.Write ((byte) 0xB1); // ident
162 writer.WriteFlexibleInt (length);
163 for (int i = offset; i < offset + length; i++)
164 WriteValueContent (array [i]);
168 public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, short [] array, int offset, int length)
170 CheckDictionaryStringArgs (localName, namespaceUri);
171 writer.Write (BF.Array);
172 WriteStartElement (prefix, localName, namespaceUri);
174 WriteArrayRemaining (array, offset, length);
177 public override void WriteArray (string prefix, string localName, string namespaceUri, short [] array, int offset, int length)
179 CheckWriteArrayArguments (array, offset, length);
180 writer.Write (BF.Array);
181 WriteStartElement (prefix, localName, namespaceUri);
183 WriteArrayRemaining (array, offset, length);
186 void WriteArrayRemaining (short [] array, int offset, int length)
188 writer.Write ((byte) 0x8B); // ident
189 writer.WriteFlexibleInt (length);
190 for (int i = offset; i < offset + length; i++)
191 WriteValueContent (array [i]);
195 public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, int [] array, int offset, int length)
197 CheckDictionaryStringArgs (localName, namespaceUri);
198 writer.Write (BF.Array);
199 WriteStartElement (prefix, localName, namespaceUri);
201 WriteArrayRemaining (array, offset, length);
204 public override void WriteArray (string prefix, string localName, string namespaceUri, int [] array, int offset, int length)
206 CheckWriteArrayArguments (array, offset, length);
207 writer.Write (BF.Array);
208 WriteStartElement (prefix, localName, namespaceUri);
210 WriteArrayRemaining (array, offset, length);
213 void WriteArrayRemaining (int [] array, int offset, int length)
215 writer.Write ((byte) 0x8D); // ident
216 writer.WriteFlexibleInt (length);
217 for (int i = offset; i < offset + length; i++)
218 WriteValueContent (array [i]);
222 public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, long [] array, int offset, int length)
224 CheckDictionaryStringArgs (localName, namespaceUri);
225 writer.Write (BF.Array);
226 WriteStartElement (prefix, localName, namespaceUri);
228 WriteArrayRemaining (array, offset, length);
231 public override void WriteArray (string prefix, string localName, string namespaceUri, long [] array, int offset, int length)
233 CheckWriteArrayArguments (array, offset, length);
234 writer.Write (BF.Array);
235 WriteStartElement (prefix, localName, namespaceUri);
237 WriteArrayRemaining (array, offset, length);
240 void WriteArrayRemaining (long [] array, int offset, int length)
242 writer.Write ((byte) 0x8F); // ident
243 writer.WriteFlexibleInt (length);
244 for (int i = offset; i < offset + length; i++)
245 WriteValueContent (array [i]);
249 public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, float [] array, int offset, int length)
251 CheckDictionaryStringArgs (localName, namespaceUri);
252 writer.Write (BF.Array);
253 WriteStartElement (prefix, localName, namespaceUri);
255 WriteArrayRemaining (array, offset, length);
258 public override void WriteArray (string prefix, string localName, string namespaceUri, float [] array, int offset, int length)
260 CheckWriteArrayArguments (array, offset, length);
261 writer.Write (BF.Array);
262 WriteStartElement (prefix, localName, namespaceUri);
264 WriteArrayRemaining (array, offset, length);
267 void WriteArrayRemaining (float [] array, int offset, int length)
269 writer.Write ((byte) 0x91); // ident
270 writer.WriteFlexibleInt (length);
271 for (int i = offset; i < offset + length; i++)
272 WriteValueContent (array [i]);
276 public override void WriteArray (string prefix, XmlDictionaryString localName, XmlDictionaryString namespaceUri, TimeSpan [] array, int offset, int length)
278 CheckDictionaryStringArgs (localName, namespaceUri);
279 writer.Write (BF.Array);
280 WriteStartElement (prefix, localName, namespaceUri);
282 WriteArrayRemaining (array, offset, length);
285 public override void WriteArray (string prefix, string localName, string namespaceUri, TimeSpan [] array, int offset, int length)
287 CheckWriteArrayArguments (array, offset, length);
288 writer.Write (BF.Array);
289 WriteStartElement (prefix, localName, namespaceUri);
291 WriteArrayRemaining (array, offset, length);
294 void WriteArrayRemaining (TimeSpan [] array, int offset, int length)
296 writer.Write ((byte) 0xAF); // ident
297 writer.WriteFlexibleInt (length);
298 for (int i = offset; i < offset + length; i++)
299 WriteValueContent (array [i]);