| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503 | 
							- using System;
 
- using System.Collections;
 
- using System.Collections.Generic;
 
- using System.Globalization;
 
- using Google.ProtocolBuffers.Descriptors;
 
- //Disable CS3011: only CLS-compliant members can be abstract
 
- #pragma warning disable 3011
 
- namespace Google.ProtocolBuffers.Serialization
 
- {
 
-     /// <summary>
 
-     /// Provides a base class for writers that performs some basic type dispatching
 
-     /// </summary>
 
-     public abstract class AbstractWriter : ICodedOutputStream
 
-     {
 
-         /// <summary>
 
-         /// Completes any pending write operations
 
-         /// </summary>
 
-         public virtual void Flush()
 
-         {
 
-         }
 
-         /// <summary>
 
-         /// Writes the message to the the formatted stream.
 
-         /// </summary>
 
-         public abstract void WriteMessage(IMessageLite message);
 
-         /// <summary>
 
-         /// Used to write any nessary root-message preamble. After this call you can call 
 
-         /// IMessageLite.MergeTo(...) and complete the message with a call to WriteMessageEnd().
 
-         /// These three calls are identical to just calling WriteMessage(message);
 
-         /// </summary>
 
-         /// <example>
 
-         /// AbstractWriter writer;
 
-         /// writer.WriteMessageStart();
 
-         /// message.WriteTo(writer);
 
-         /// writer.WriteMessageEnd();
 
-         /// // ... or, but not both ...
 
-         /// writer.WriteMessage(message);
 
-         /// </example>
 
-         public abstract void WriteMessageStart();
 
-         /// <summary>
 
-         /// Used to complete a root-message previously started with a call to WriteMessageStart()
 
-         /// </summary>
 
-         public abstract void WriteMessageEnd();
 
-         /// <summary>
 
-         /// Writes a Boolean value
 
-         /// </summary>
 
-         protected abstract void Write(string field, Boolean value);
 
-         /// <summary>
 
-         /// Writes a Int32 value
 
-         /// </summary>
 
-         protected abstract void Write(string field, Int32 value);
 
-         /// <summary>
 
-         /// Writes a UInt32 value
 
-         /// </summary>
 
-         protected abstract void Write(string field, UInt32 value);
 
-         /// <summary>
 
-         /// Writes a Int64 value
 
-         /// </summary>
 
-         protected abstract void Write(string field, Int64 value);
 
-         /// <summary>
 
-         /// Writes a UInt64 value
 
-         /// </summary>
 
-         protected abstract void Write(string field, UInt64 value);
 
-         /// <summary>
 
-         /// Writes a Single value
 
-         /// </summary>
 
-         protected abstract void Write(string field, Single value);
 
-         /// <summary>
 
-         /// Writes a Double value
 
-         /// </summary>
 
-         protected abstract void Write(string field, Double value);
 
-         /// <summary>
 
-         /// Writes a String value
 
-         /// </summary>
 
-         protected abstract void Write(string field, String value);
 
-         /// <summary>
 
-         /// Writes a set of bytes
 
-         /// </summary>
 
-         protected abstract void Write(string field, ByteString value);
 
-         /// <summary>
 
-         /// Writes a message or group as a field
 
-         /// </summary>
 
-         protected abstract void WriteMessageOrGroup(string field, IMessageLite message);
 
-         /// <summary>
 
-         /// Writes a System.Enum by the numeric and textual value
 
-         /// </summary>
 
-         protected abstract void WriteEnum(string field, int number, string name);
 
-         /// <summary>
 
-         /// Writes a field of the type determined by field.FieldType
 
-         /// </summary>
 
-         protected virtual void WriteField(FieldType fieldType, string field, object value)
 
-         {
 
-             switch (fieldType)
 
-             {
 
-                 case FieldType.Bool:
 
-                     Write(field, (bool) value);
 
-                     break;
 
-                 case FieldType.Int64:
 
-                 case FieldType.SInt64:
 
-                 case FieldType.SFixed64:
 
-                     Write(field, (long) value);
 
-                     break;
 
-                 case FieldType.UInt64:
 
-                 case FieldType.Fixed64:
 
-                     Write(field, (ulong) value);
 
-                     break;
 
-                 case FieldType.Int32:
 
-                 case FieldType.SInt32:
 
-                 case FieldType.SFixed32:
 
-                     Write(field, (int) value);
 
-                     break;
 
-                 case FieldType.UInt32:
 
-                 case FieldType.Fixed32:
 
-                     Write(field, (uint) value);
 
-                     break;
 
-                 case FieldType.Float:
 
-                     Write(field, (float) value);
 
-                     break;
 
-                 case FieldType.Double:
 
-                     Write(field, (double) value);
 
-                     break;
 
-                 case FieldType.String:
 
-                     Write(field, (string) value);
 
-                     break;
 
-                 case FieldType.Bytes:
 
-                     Write(field, (ByteString) value);
 
-                     break;
 
-                 case FieldType.Group:
 
-                     WriteMessageOrGroup(field, (IMessageLite) value);
 
-                     break;
 
-                 case FieldType.Message:
 
-                     WriteMessageOrGroup(field, (IMessageLite) value);
 
-                     break;
 
-                 case FieldType.Enum:
 
-                     {
 
-                         if (value is IEnumLite)
 
-                         {
 
-                             WriteEnum(field, ((IEnumLite) value).Number, ((IEnumLite) value).Name);
 
-                         }
 
-                         else if (value is IConvertible)
 
-                         {
 
-                             WriteEnum(field, ((IConvertible)value).ToInt32(FrameworkPortability.InvariantCulture),
 
-                                       ((IConvertible)value).ToString(FrameworkPortability.InvariantCulture));
 
-                         }
 
-                         else
 
-                         {
 
-                             throw new ArgumentException("Expected an Enum type for field " + field);
 
-                         }
 
-                         break;
 
-                     }
 
-                 default:
 
-                     throw InvalidProtocolBufferException.InvalidTag();
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// Writes an array of field values
 
-         /// </summary>
 
-         protected virtual void WriteArray(FieldType fieldType, string field, IEnumerable items)
 
-         {
 
-             foreach (object obj in items)
 
-             {
 
-                 WriteField(fieldType, field, obj);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// Writes a numeric unknown field of wire type: Fixed32, Fixed64, or Variant
 
-         /// </summary>
 
-         protected virtual void WriteUnknown(WireFormat.WireType wireType, int fieldNumber, ulong value)
 
-         {
 
-         }
 
-         /// <summary>
 
-         /// Writes an unknown field, Expect WireType of GroupStart or LengthPrefix
 
-         /// </summary>
 
-         protected virtual void WriteUnknown(WireFormat.WireType wireType, int fieldNumber, ByteString value)
 
-         {
 
-         }
 
-         #region ICodedOutputStream Members
 
-         void ICodedOutputStream.WriteUnknownGroup(int fieldNumber, IMessageLite value)
 
-         {
 
-         }
 
-         void ICodedOutputStream.WriteUnknownBytes(int fieldNumber, ByteString value)
 
-         {
 
-         }
 
-         void ICodedOutputStream.WriteUnknownField(int fieldNumber, WireFormat.WireType type, ulong value)
 
-         {
 
-         }
 
-         void ICodedOutputStream.WriteMessageSetExtension(int fieldNumber, string fieldName, IMessageLite value)
 
-         {
 
-         }
 
-         void ICodedOutputStream.WriteMessageSetExtension(int fieldNumber, string fieldName, ByteString value)
 
-         {
 
-         }
 
-         void ICodedOutputStream.WriteField(FieldType fieldType, int fieldNumber, string fieldName, object value)
 
-         {
 
-             WriteField(fieldType, fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteDouble(int fieldNumber, string fieldName, double value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteFloat(int fieldNumber, string fieldName, float value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteUInt64(int fieldNumber, string fieldName, ulong value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteInt64(int fieldNumber, string fieldName, long value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteInt32(int fieldNumber, string fieldName, int value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteFixed64(int fieldNumber, string fieldName, ulong value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteFixed32(int fieldNumber, string fieldName, uint value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteBool(int fieldNumber, string fieldName, bool value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteString(int fieldNumber, string fieldName, string value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteGroup(int fieldNumber, string fieldName, IMessageLite value)
 
-         {
 
-             WriteMessageOrGroup(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteMessage(int fieldNumber, string fieldName, IMessageLite value)
 
-         {
 
-             WriteMessageOrGroup(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteBytes(int fieldNumber, string fieldName, ByteString value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteUInt32(int fieldNumber, string fieldName, uint value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteEnum(int fieldNumber, string fieldName, int value, object rawValue)
 
-         {
 
-             WriteEnum(fieldName, value, rawValue.ToString());
 
-         }
 
-         void ICodedOutputStream.WriteSFixed32(int fieldNumber, string fieldName, int value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteSFixed64(int fieldNumber, string fieldName, long value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteSInt32(int fieldNumber, string fieldName, int value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteSInt64(int fieldNumber, string fieldName, long value)
 
-         {
 
-             Write(fieldName, value);
 
-         }
 
-         void ICodedOutputStream.WriteArray(FieldType fieldType, int fieldNumber, string fieldName, IEnumerable list)
 
-         {
 
-             WriteArray(fieldType, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteGroupArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
 
-         {
 
-             WriteArray(FieldType.Group, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteMessageArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
 
-         {
 
-             WriteArray(FieldType.Message, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteStringArray(int fieldNumber, string fieldName, IEnumerable<string> list)
 
-         {
 
-             WriteArray(FieldType.String, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteBytesArray(int fieldNumber, string fieldName, IEnumerable<ByteString> list)
 
-         {
 
-             WriteArray(FieldType.Bytes, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteBoolArray(int fieldNumber, string fieldName, IEnumerable<bool> list)
 
-         {
 
-             WriteArray(FieldType.Bool, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
 
-         {
 
-             WriteArray(FieldType.Int32, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteSInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
 
-         {
 
-             WriteArray(FieldType.SInt32, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteUInt32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
 
-         {
 
-             WriteArray(FieldType.UInt32, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteFixed32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
 
-         {
 
-             WriteArray(FieldType.Fixed32, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteSFixed32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
 
-         {
 
-             WriteArray(FieldType.SFixed32, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
 
-         {
 
-             WriteArray(FieldType.Int64, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteSInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
 
-         {
 
-             WriteArray(FieldType.SInt64, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteUInt64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
 
-         {
 
-             WriteArray(FieldType.UInt64, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteFixed64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
 
-         {
 
-             WriteArray(FieldType.Fixed64, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteSFixed64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
 
-         {
 
-             WriteArray(FieldType.SFixed64, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteDoubleArray(int fieldNumber, string fieldName, IEnumerable<double> list)
 
-         {
 
-             WriteArray(FieldType.Double, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteFloatArray(int fieldNumber, string fieldName, IEnumerable<float> list)
 
-         {
 
-             WriteArray(FieldType.Float, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WriteEnumArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
 
-         {
 
-             WriteArray(FieldType.Enum, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName,
 
-                                                  IEnumerable list)
 
-         {
 
-             WriteArray(fieldType, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedBoolArray(int fieldNumber, string fieldName, int computedSize,
 
-                                                      IEnumerable<bool> list)
 
-         {
 
-             WriteArray(FieldType.Bool, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedInt32Array(int fieldNumber, string fieldName, int computedSize,
 
-                                                       IEnumerable<int> list)
 
-         {
 
-             WriteArray(FieldType.Int32, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedSInt32Array(int fieldNumber, string fieldName, int computedSize,
 
-                                                        IEnumerable<int> list)
 
-         {
 
-             WriteArray(FieldType.SInt32, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedUInt32Array(int fieldNumber, string fieldName, int computedSize,
 
-                                                        IEnumerable<uint> list)
 
-         {
 
-             WriteArray(FieldType.UInt32, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedFixed32Array(int fieldNumber, string fieldName, int computedSize,
 
-                                                         IEnumerable<uint> list)
 
-         {
 
-             WriteArray(FieldType.Fixed32, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedSFixed32Array(int fieldNumber, string fieldName, int computedSize,
 
-                                                          IEnumerable<int> list)
 
-         {
 
-             WriteArray(FieldType.SFixed32, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedInt64Array(int fieldNumber, string fieldName, int computedSize,
 
-                                                       IEnumerable<long> list)
 
-         {
 
-             WriteArray(FieldType.Int64, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedSInt64Array(int fieldNumber, string fieldName, int computedSize,
 
-                                                        IEnumerable<long> list)
 
-         {
 
-             WriteArray(FieldType.SInt64, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedUInt64Array(int fieldNumber, string fieldName, int computedSize,
 
-                                                        IEnumerable<ulong> list)
 
-         {
 
-             WriteArray(FieldType.UInt64, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedFixed64Array(int fieldNumber, string fieldName, int computedSize,
 
-                                                         IEnumerable<ulong> list)
 
-         {
 
-             WriteArray(FieldType.Fixed64, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedSFixed64Array(int fieldNumber, string fieldName, int computedSize,
 
-                                                          IEnumerable<long> list)
 
-         {
 
-             WriteArray(FieldType.SFixed64, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedDoubleArray(int fieldNumber, string fieldName, int computedSize,
 
-                                                        IEnumerable<double> list)
 
-         {
 
-             WriteArray(FieldType.Double, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedFloatArray(int fieldNumber, string fieldName, int computedSize,
 
-                                                       IEnumerable<float> list)
 
-         {
 
-             WriteArray(FieldType.Float, fieldName, list);
 
-         }
 
-         void ICodedOutputStream.WritePackedEnumArray<T>(int fieldNumber, string fieldName, int computedSize,
 
-                                                         IEnumerable<T> list)
 
-         {
 
-             WriteArray(FieldType.Enum, fieldName, list);
 
-         }
 
-         #endregion
 
-     }
 
- }
 
 
  |