blob: 7ae268646f03fff4a19d6c4ca71753dfe461a2ca [file] [log] [blame]
csharptest2b868842011-06-10 14:41:47 -05001using System;
2using System.Collections;
csharptest74c5e0c2011-07-14 13:06:22 -05003using System.Collections.Generic;
csharptest2b868842011-06-10 14:41:47 -05004using System.Globalization;
5using Google.ProtocolBuffers.Descriptors;
6
7//Disable CS3011: only CLS-compliant members can be abstract
8#pragma warning disable 3011
9
10namespace Google.ProtocolBuffers.Serialization
11{
12 /// <summary>
13 /// Provides a base class for writers that performs some basic type dispatching
14 /// </summary>
15 public abstract class AbstractWriter : ICodedOutputStream, IDisposable
16 {
17 /// <summary>
18 /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
19 /// </summary>
20 public void Dispose()
21 {
22 GC.SuppressFinalize(this);
23 Flush();
24 Dispose(true);
25 }
26
27 /// <summary>
28 /// Completes any pending write operations
29 /// </summary>
30 public virtual void Flush()
csharptest74c5e0c2011-07-14 13:06:22 -050031 {
32 }
csharptest2b868842011-06-10 14:41:47 -050033
34 /// <summary>
35 /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
36 /// </summary>
37 protected virtual void Dispose(bool disposing)
38 {
39 }
40
41 /// <summary>
42 /// Writes the message to the the formatted stream.
43 /// </summary>
44 public abstract void WriteMessage(IMessageLite message);
45
46 /// <summary>
csharptestc2d2c1a2011-09-08 20:02:11 -050047 /// Used to write any nessary root-message preamble. After this call you can call
csharptest60fd7732011-09-09 12:18:16 -050048 /// IMessageLite.MergeTo(...) and complete the message with a call to WriteMessageEnd().
csharptestc2d2c1a2011-09-08 20:02:11 -050049 /// These three calls are identical to just calling WriteMessage(message);
50 /// </summary>
51 /// <example>
52 /// AbstractWriter writer;
csharptest60fd7732011-09-09 12:18:16 -050053 /// writer.WriteMessageStart();
csharptestc2d2c1a2011-09-08 20:02:11 -050054 /// message.WriteTo(writer);
csharptest60fd7732011-09-09 12:18:16 -050055 /// writer.WriteMessageEnd();
csharptestc2d2c1a2011-09-08 20:02:11 -050056 /// // ... or, but not both ...
57 /// writer.WriteMessage(message);
58 /// </example>
csharptest60fd7732011-09-09 12:18:16 -050059 public abstract void WriteMessageStart();
csharptestc2d2c1a2011-09-08 20:02:11 -050060
61 /// <summary>
csharptest60fd7732011-09-09 12:18:16 -050062 /// Used to complete a root-message previously started with a call to WriteMessageStart()
csharptestc2d2c1a2011-09-08 20:02:11 -050063 /// </summary>
csharptest60fd7732011-09-09 12:18:16 -050064 public abstract void WriteMessageEnd();
csharptestc2d2c1a2011-09-08 20:02:11 -050065
66 /// <summary>
csharptest2b868842011-06-10 14:41:47 -050067 /// Writes a Boolean value
68 /// </summary>
69 protected abstract void Write(string field, Boolean value);
70
71 /// <summary>
72 /// Writes a Int32 value
73 /// </summary>
74 protected abstract void Write(string field, Int32 value);
75
76 /// <summary>
77 /// Writes a UInt32 value
78 /// </summary>
79 [CLSCompliant(false)]
80 protected abstract void Write(string field, UInt32 value);
81
82 /// <summary>
83 /// Writes a Int64 value
84 /// </summary>
85 protected abstract void Write(string field, Int64 value);
86
87 /// <summary>
88 /// Writes a UInt64 value
89 /// </summary>
90 [CLSCompliant(false)]
91 protected abstract void Write(string field, UInt64 value);
92
93 /// <summary>
94 /// Writes a Single value
95 /// </summary>
96 protected abstract void Write(string field, Single value);
97
98 /// <summary>
99 /// Writes a Double value
100 /// </summary>
101 protected abstract void Write(string field, Double value);
102
103 /// <summary>
104 /// Writes a String value
105 /// </summary>
106 protected abstract void Write(string field, String value);
107
108 /// <summary>
109 /// Writes a set of bytes
110 /// </summary>
111 protected abstract void Write(string field, ByteString value);
112
113 /// <summary>
114 /// Writes a message or group as a field
115 /// </summary>
116 protected abstract void WriteMessageOrGroup(string field, IMessageLite message);
117
118 /// <summary>
119 /// Writes a System.Enum by the numeric and textual value
120 /// </summary>
121 protected abstract void WriteEnum(string field, int number, string name);
122
123 /// <summary>
124 /// Writes a field of the type determined by field.FieldType
125 /// </summary>
126 protected virtual void WriteField(FieldType fieldType, string field, object value)
127 {
128 switch (fieldType)
129 {
csharptest74c5e0c2011-07-14 13:06:22 -0500130 case FieldType.Bool:
131 Write(field, (bool) value);
132 break;
csharptest2b868842011-06-10 14:41:47 -0500133 case FieldType.Int64:
134 case FieldType.SInt64:
csharptest74c5e0c2011-07-14 13:06:22 -0500135 case FieldType.SFixed64:
136 Write(field, (long) value);
137 break;
csharptest2b868842011-06-10 14:41:47 -0500138 case FieldType.UInt64:
csharptest74c5e0c2011-07-14 13:06:22 -0500139 case FieldType.Fixed64:
140 Write(field, (ulong) value);
141 break;
csharptest2b868842011-06-10 14:41:47 -0500142 case FieldType.Int32:
143 case FieldType.SInt32:
csharptest74c5e0c2011-07-14 13:06:22 -0500144 case FieldType.SFixed32:
145 Write(field, (int) value);
146 break;
csharptest2b868842011-06-10 14:41:47 -0500147 case FieldType.UInt32:
csharptest74c5e0c2011-07-14 13:06:22 -0500148 case FieldType.Fixed32:
149 Write(field, (uint) value);
150 break;
151 case FieldType.Float:
152 Write(field, (float) value);
153 break;
154 case FieldType.Double:
155 Write(field, (double) value);
156 break;
157 case FieldType.String:
158 Write(field, (string) value);
159 break;
160 case FieldType.Bytes:
161 Write(field, (ByteString) value);
162 break;
163 case FieldType.Group:
164 WriteMessageOrGroup(field, (IMessageLite) value);
165 break;
166 case FieldType.Message:
167 WriteMessageOrGroup(field, (IMessageLite) value);
168 break;
csharptest2b868842011-06-10 14:41:47 -0500169 case FieldType.Enum:
170 {
csharptest74c5e0c2011-07-14 13:06:22 -0500171 if (value is IEnumLite)
172 {
173 WriteEnum(field, ((IEnumLite) value).Number, ((IEnumLite) value).Name);
174 }
175 else if (value is IConvertible)
176 {
177 WriteEnum(field, ((IConvertible) value).ToInt32(CultureInfo.InvariantCulture),
178 ((IConvertible) value).ToString(CultureInfo.InvariantCulture));
179 }
180 else
181 {
182 throw new ArgumentException("Expected an Enum type for field " + field);
183 }
csharptest2b868842011-06-10 14:41:47 -0500184 break;
185 }
186 default:
187 throw InvalidProtocolBufferException.InvalidTag();
188 }
189 }
190
191 /// <summary>
192 /// Writes an array of field values
193 /// </summary>
194 protected virtual void WriteArray(FieldType fieldType, string field, IEnumerable items)
195 {
196 foreach (object obj in items)
csharptest74c5e0c2011-07-14 13:06:22 -0500197 {
csharptest2b868842011-06-10 14:41:47 -0500198 WriteField(fieldType, field, obj);
csharptest74c5e0c2011-07-14 13:06:22 -0500199 }
csharptest2b868842011-06-10 14:41:47 -0500200 }
201
202 /// <summary>
203 /// Writes a numeric unknown field of wire type: Fixed32, Fixed64, or Variant
204 /// </summary>
205 [CLSCompliant(false)]
206 protected virtual void WriteUnknown(WireFormat.WireType wireType, int fieldNumber, ulong value)
csharptest74c5e0c2011-07-14 13:06:22 -0500207 {
208 }
csharptest2b868842011-06-10 14:41:47 -0500209
210 /// <summary>
211 /// Writes an unknown field, Expect WireType of GroupStart or LengthPrefix
212 /// </summary>
213 [CLSCompliant(false)]
214 protected virtual void WriteUnknown(WireFormat.WireType wireType, int fieldNumber, ByteString value)
csharptest74c5e0c2011-07-14 13:06:22 -0500215 {
216 }
csharptest2b868842011-06-10 14:41:47 -0500217
218 #region ICodedOutputStream Members
219
220 void ICodedOutputStream.WriteUnknownGroup(int fieldNumber, IMessageLite value)
csharptest74c5e0c2011-07-14 13:06:22 -0500221 {
222 }
223
csharptest2b868842011-06-10 14:41:47 -0500224 void ICodedOutputStream.WriteUnknownBytes(int fieldNumber, ByteString value)
csharptest74c5e0c2011-07-14 13:06:22 -0500225 {
226 }
227
csharptest2b868842011-06-10 14:41:47 -0500228 void ICodedOutputStream.WriteUnknownField(int fieldNumber, WireFormat.WireType type, ulong value)
csharptest74c5e0c2011-07-14 13:06:22 -0500229 {
230 }
csharptest2b868842011-06-10 14:41:47 -0500231
232 void ICodedOutputStream.WriteMessageSetExtension(int fieldNumber, string fieldName, IMessageLite value)
csharptest74c5e0c2011-07-14 13:06:22 -0500233 {
234 }
csharptest2b868842011-06-10 14:41:47 -0500235
236 void ICodedOutputStream.WriteMessageSetExtension(int fieldNumber, string fieldName, ByteString value)
csharptest74c5e0c2011-07-14 13:06:22 -0500237 {
238 }
csharptest2b868842011-06-10 14:41:47 -0500239
240 void ICodedOutputStream.WriteField(FieldType fieldType, int fieldNumber, string fieldName, object value)
csharptest74c5e0c2011-07-14 13:06:22 -0500241 {
242 WriteField(fieldType, fieldName, value);
243 }
csharptest2b868842011-06-10 14:41:47 -0500244
245 void ICodedOutputStream.WriteDouble(int fieldNumber, string fieldName, double value)
csharptest74c5e0c2011-07-14 13:06:22 -0500246 {
247 Write(fieldName, value);
248 }
csharptest2b868842011-06-10 14:41:47 -0500249
250 void ICodedOutputStream.WriteFloat(int fieldNumber, string fieldName, float value)
csharptest74c5e0c2011-07-14 13:06:22 -0500251 {
252 Write(fieldName, value);
253 }
csharptest2b868842011-06-10 14:41:47 -0500254
255 void ICodedOutputStream.WriteUInt64(int fieldNumber, string fieldName, ulong value)
csharptest74c5e0c2011-07-14 13:06:22 -0500256 {
257 Write(fieldName, value);
258 }
csharptest2b868842011-06-10 14:41:47 -0500259
260 void ICodedOutputStream.WriteInt64(int fieldNumber, string fieldName, long value)
csharptest74c5e0c2011-07-14 13:06:22 -0500261 {
262 Write(fieldName, value);
263 }
csharptest2b868842011-06-10 14:41:47 -0500264
265 void ICodedOutputStream.WriteInt32(int fieldNumber, string fieldName, int value)
csharptest74c5e0c2011-07-14 13:06:22 -0500266 {
267 Write(fieldName, value);
268 }
csharptest2b868842011-06-10 14:41:47 -0500269
270 void ICodedOutputStream.WriteFixed64(int fieldNumber, string fieldName, ulong value)
csharptest74c5e0c2011-07-14 13:06:22 -0500271 {
272 Write(fieldName, value);
273 }
csharptest2b868842011-06-10 14:41:47 -0500274
275 void ICodedOutputStream.WriteFixed32(int fieldNumber, string fieldName, uint value)
csharptest74c5e0c2011-07-14 13:06:22 -0500276 {
277 Write(fieldName, value);
278 }
csharptest2b868842011-06-10 14:41:47 -0500279
280 void ICodedOutputStream.WriteBool(int fieldNumber, string fieldName, bool value)
csharptest74c5e0c2011-07-14 13:06:22 -0500281 {
282 Write(fieldName, value);
283 }
csharptest2b868842011-06-10 14:41:47 -0500284
285 void ICodedOutputStream.WriteString(int fieldNumber, string fieldName, string value)
csharptest74c5e0c2011-07-14 13:06:22 -0500286 {
287 Write(fieldName, value);
288 }
csharptest2b868842011-06-10 14:41:47 -0500289
290 void ICodedOutputStream.WriteGroup(int fieldNumber, string fieldName, IMessageLite value)
csharptest74c5e0c2011-07-14 13:06:22 -0500291 {
292 WriteMessageOrGroup(fieldName, value);
293 }
csharptest2b868842011-06-10 14:41:47 -0500294
295 void ICodedOutputStream.WriteMessage(int fieldNumber, string fieldName, IMessageLite value)
csharptest74c5e0c2011-07-14 13:06:22 -0500296 {
297 WriteMessageOrGroup(fieldName, value);
298 }
csharptest2b868842011-06-10 14:41:47 -0500299
300 void ICodedOutputStream.WriteBytes(int fieldNumber, string fieldName, ByteString value)
csharptest74c5e0c2011-07-14 13:06:22 -0500301 {
302 Write(fieldName, value);
303 }
csharptest2b868842011-06-10 14:41:47 -0500304
305 void ICodedOutputStream.WriteUInt32(int fieldNumber, string fieldName, uint value)
csharptest74c5e0c2011-07-14 13:06:22 -0500306 {
307 Write(fieldName, value);
308 }
csharptest2b868842011-06-10 14:41:47 -0500309
310 void ICodedOutputStream.WriteEnum(int fieldNumber, string fieldName, int value, object rawValue)
csharptest74c5e0c2011-07-14 13:06:22 -0500311 {
312 WriteEnum(fieldName, value, rawValue.ToString());
313 }
csharptest2b868842011-06-10 14:41:47 -0500314
315 void ICodedOutputStream.WriteSFixed32(int fieldNumber, string fieldName, int value)
csharptest74c5e0c2011-07-14 13:06:22 -0500316 {
317 Write(fieldName, value);
318 }
csharptest2b868842011-06-10 14:41:47 -0500319
320 void ICodedOutputStream.WriteSFixed64(int fieldNumber, string fieldName, long value)
csharptest74c5e0c2011-07-14 13:06:22 -0500321 {
322 Write(fieldName, value);
323 }
csharptest2b868842011-06-10 14:41:47 -0500324
325 void ICodedOutputStream.WriteSInt32(int fieldNumber, string fieldName, int value)
csharptest74c5e0c2011-07-14 13:06:22 -0500326 {
327 Write(fieldName, value);
328 }
csharptest2b868842011-06-10 14:41:47 -0500329
330 void ICodedOutputStream.WriteSInt64(int fieldNumber, string fieldName, long value)
csharptest74c5e0c2011-07-14 13:06:22 -0500331 {
332 Write(fieldName, value);
333 }
csharptest2b868842011-06-10 14:41:47 -0500334
335
336 void ICodedOutputStream.WriteArray(FieldType fieldType, int fieldNumber, string fieldName, IEnumerable list)
csharptest74c5e0c2011-07-14 13:06:22 -0500337 {
338 WriteArray(fieldType, fieldName, list);
339 }
csharptest2b868842011-06-10 14:41:47 -0500340
csharptest74c5e0c2011-07-14 13:06:22 -0500341 void ICodedOutputStream.WriteGroupArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
342 {
343 WriteArray(FieldType.Group, fieldName, list);
344 }
csharptest2b868842011-06-10 14:41:47 -0500345
csharptest74c5e0c2011-07-14 13:06:22 -0500346 void ICodedOutputStream.WriteMessageArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
347 {
348 WriteArray(FieldType.Message, fieldName, list);
349 }
csharptest2b868842011-06-10 14:41:47 -0500350
csharptest74c5e0c2011-07-14 13:06:22 -0500351 void ICodedOutputStream.WriteStringArray(int fieldNumber, string fieldName, IEnumerable<string> list)
352 {
353 WriteArray(FieldType.String, fieldName, list);
354 }
csharptest2b868842011-06-10 14:41:47 -0500355
csharptest74c5e0c2011-07-14 13:06:22 -0500356 void ICodedOutputStream.WriteBytesArray(int fieldNumber, string fieldName, IEnumerable<ByteString> list)
357 {
358 WriteArray(FieldType.Bytes, fieldName, list);
359 }
csharptest2b868842011-06-10 14:41:47 -0500360
csharptest74c5e0c2011-07-14 13:06:22 -0500361 void ICodedOutputStream.WriteBoolArray(int fieldNumber, string fieldName, IEnumerable<bool> list)
362 {
363 WriteArray(FieldType.Bool, fieldName, list);
364 }
csharptest2b868842011-06-10 14:41:47 -0500365
csharptest74c5e0c2011-07-14 13:06:22 -0500366 void ICodedOutputStream.WriteInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
367 {
368 WriteArray(FieldType.Int32, fieldName, list);
369 }
csharptest2b868842011-06-10 14:41:47 -0500370
csharptest74c5e0c2011-07-14 13:06:22 -0500371 void ICodedOutputStream.WriteSInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
372 {
373 WriteArray(FieldType.SInt32, fieldName, list);
374 }
csharptest2b868842011-06-10 14:41:47 -0500375
csharptest74c5e0c2011-07-14 13:06:22 -0500376 void ICodedOutputStream.WriteUInt32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
377 {
378 WriteArray(FieldType.UInt32, fieldName, list);
379 }
csharptest2b868842011-06-10 14:41:47 -0500380
csharptest74c5e0c2011-07-14 13:06:22 -0500381 void ICodedOutputStream.WriteFixed32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
382 {
383 WriteArray(FieldType.Fixed32, fieldName, list);
384 }
csharptest2b868842011-06-10 14:41:47 -0500385
csharptest74c5e0c2011-07-14 13:06:22 -0500386 void ICodedOutputStream.WriteSFixed32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
387 {
388 WriteArray(FieldType.SFixed32, fieldName, list);
389 }
csharptest2b868842011-06-10 14:41:47 -0500390
csharptest74c5e0c2011-07-14 13:06:22 -0500391 void ICodedOutputStream.WriteInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
392 {
393 WriteArray(FieldType.Int64, fieldName, list);
394 }
csharptest2b868842011-06-10 14:41:47 -0500395
csharptest74c5e0c2011-07-14 13:06:22 -0500396 void ICodedOutputStream.WriteSInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
397 {
398 WriteArray(FieldType.SInt64, fieldName, list);
399 }
csharptest2b868842011-06-10 14:41:47 -0500400
csharptest74c5e0c2011-07-14 13:06:22 -0500401 void ICodedOutputStream.WriteUInt64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
402 {
403 WriteArray(FieldType.UInt64, fieldName, list);
404 }
csharptest2b868842011-06-10 14:41:47 -0500405
csharptest74c5e0c2011-07-14 13:06:22 -0500406 void ICodedOutputStream.WriteFixed64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
407 {
408 WriteArray(FieldType.Fixed64, fieldName, list);
409 }
csharptest2b868842011-06-10 14:41:47 -0500410
csharptest74c5e0c2011-07-14 13:06:22 -0500411 void ICodedOutputStream.WriteSFixed64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
412 {
413 WriteArray(FieldType.SFixed64, fieldName, list);
414 }
csharptest2b868842011-06-10 14:41:47 -0500415
csharptest74c5e0c2011-07-14 13:06:22 -0500416 void ICodedOutputStream.WriteDoubleArray(int fieldNumber, string fieldName, IEnumerable<double> list)
417 {
418 WriteArray(FieldType.Double, fieldName, list);
419 }
csharptest2b868842011-06-10 14:41:47 -0500420
csharptest74c5e0c2011-07-14 13:06:22 -0500421 void ICodedOutputStream.WriteFloatArray(int fieldNumber, string fieldName, IEnumerable<float> list)
422 {
423 WriteArray(FieldType.Float, fieldName, list);
424 }
csharptest2b868842011-06-10 14:41:47 -0500425
csharptest74c5e0c2011-07-14 13:06:22 -0500426 void ICodedOutputStream.WriteEnumArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
427 {
428 WriteArray(FieldType.Enum, fieldName, list);
429 }
csharptest2b868842011-06-10 14:41:47 -0500430
csharptest74c5e0c2011-07-14 13:06:22 -0500431 void ICodedOutputStream.WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName,
432 IEnumerable list)
433 {
434 WriteArray(fieldType, fieldName, list);
435 }
csharptest2b868842011-06-10 14:41:47 -0500436
437
csharptest74c5e0c2011-07-14 13:06:22 -0500438 void ICodedOutputStream.WritePackedBoolArray(int fieldNumber, string fieldName, int computedSize,
439 IEnumerable<bool> list)
440 {
441 WriteArray(FieldType.Bool, fieldName, list);
442 }
csharptest2b868842011-06-10 14:41:47 -0500443
csharptest74c5e0c2011-07-14 13:06:22 -0500444 void ICodedOutputStream.WritePackedInt32Array(int fieldNumber, string fieldName, int computedSize,
445 IEnumerable<int> list)
446 {
447 WriteArray(FieldType.Int32, fieldName, list);
448 }
csharptest2b868842011-06-10 14:41:47 -0500449
csharptest74c5e0c2011-07-14 13:06:22 -0500450 void ICodedOutputStream.WritePackedSInt32Array(int fieldNumber, string fieldName, int computedSize,
451 IEnumerable<int> list)
452 {
453 WriteArray(FieldType.SInt32, fieldName, list);
454 }
csharptest2b868842011-06-10 14:41:47 -0500455
csharptest74c5e0c2011-07-14 13:06:22 -0500456 void ICodedOutputStream.WritePackedUInt32Array(int fieldNumber, string fieldName, int computedSize,
457 IEnumerable<uint> list)
458 {
459 WriteArray(FieldType.UInt32, fieldName, list);
460 }
csharptest2b868842011-06-10 14:41:47 -0500461
csharptest74c5e0c2011-07-14 13:06:22 -0500462 void ICodedOutputStream.WritePackedFixed32Array(int fieldNumber, string fieldName, int computedSize,
463 IEnumerable<uint> list)
464 {
465 WriteArray(FieldType.Fixed32, fieldName, list);
466 }
csharptest2b868842011-06-10 14:41:47 -0500467
csharptest74c5e0c2011-07-14 13:06:22 -0500468 void ICodedOutputStream.WritePackedSFixed32Array(int fieldNumber, string fieldName, int computedSize,
469 IEnumerable<int> list)
470 {
471 WriteArray(FieldType.SFixed32, fieldName, list);
472 }
csharptest2b868842011-06-10 14:41:47 -0500473
csharptest74c5e0c2011-07-14 13:06:22 -0500474 void ICodedOutputStream.WritePackedInt64Array(int fieldNumber, string fieldName, int computedSize,
475 IEnumerable<long> list)
476 {
477 WriteArray(FieldType.Int64, fieldName, list);
478 }
csharptest2b868842011-06-10 14:41:47 -0500479
csharptest74c5e0c2011-07-14 13:06:22 -0500480 void ICodedOutputStream.WritePackedSInt64Array(int fieldNumber, string fieldName, int computedSize,
481 IEnumerable<long> list)
482 {
483 WriteArray(FieldType.SInt64, fieldName, list);
484 }
csharptest2b868842011-06-10 14:41:47 -0500485
csharptest74c5e0c2011-07-14 13:06:22 -0500486 void ICodedOutputStream.WritePackedUInt64Array(int fieldNumber, string fieldName, int computedSize,
487 IEnumerable<ulong> list)
488 {
489 WriteArray(FieldType.UInt64, fieldName, list);
490 }
csharptest2b868842011-06-10 14:41:47 -0500491
csharptest74c5e0c2011-07-14 13:06:22 -0500492 void ICodedOutputStream.WritePackedFixed64Array(int fieldNumber, string fieldName, int computedSize,
493 IEnumerable<ulong> list)
494 {
495 WriteArray(FieldType.Fixed64, fieldName, list);
496 }
csharptest2b868842011-06-10 14:41:47 -0500497
csharptest74c5e0c2011-07-14 13:06:22 -0500498 void ICodedOutputStream.WritePackedSFixed64Array(int fieldNumber, string fieldName, int computedSize,
499 IEnumerable<long> list)
500 {
501 WriteArray(FieldType.SFixed64, fieldName, list);
502 }
csharptest2b868842011-06-10 14:41:47 -0500503
csharptest74c5e0c2011-07-14 13:06:22 -0500504 void ICodedOutputStream.WritePackedDoubleArray(int fieldNumber, string fieldName, int computedSize,
505 IEnumerable<double> list)
506 {
507 WriteArray(FieldType.Double, fieldName, list);
508 }
csharptest2b868842011-06-10 14:41:47 -0500509
csharptest74c5e0c2011-07-14 13:06:22 -0500510 void ICodedOutputStream.WritePackedFloatArray(int fieldNumber, string fieldName, int computedSize,
511 IEnumerable<float> list)
512 {
513 WriteArray(FieldType.Float, fieldName, list);
514 }
csharptest2b868842011-06-10 14:41:47 -0500515
csharptest74c5e0c2011-07-14 13:06:22 -0500516 void ICodedOutputStream.WritePackedEnumArray<T>(int fieldNumber, string fieldName, int computedSize,
517 IEnumerable<T> list)
518 {
519 WriteArray(FieldType.Enum, fieldName, list);
520 }
csharptest2b868842011-06-10 14:41:47 -0500521
522 #endregion
523 }
csharptest74c5e0c2011-07-14 13:06:22 -0500524}