using System; using System.Xml; namespace Google.ProtocolBuffers.Serialization { /// /// Provides a base class for text writers /// public abstract class AbstractTextWriter : AbstractWriter { /// /// Encodes raw bytes to be written to the stream /// protected virtual string EncodeBytes(ByteString bytes) { return bytes.ToBase64(); } /// /// Writes a typed field as a text value /// protected abstract void WriteAsText(string field, string textValue, object typedValue); /// /// Writes a String value /// protected override void Write(string field, string value) { WriteAsText(field, value, value); } /// /// Writes a Boolean value /// protected override void Write(string field, bool value) { WriteAsText(field, XmlConvert.ToString(value), value); } /// /// Writes a Int32 value /// protected override void Write(string field, int value) { WriteAsText(field, XmlConvert.ToString(value), value); } /// /// Writes a UInt32 value /// protected override void Write(string field, uint value) { WriteAsText(field, XmlConvert.ToString(value), value); } /// /// Writes a Int64 value /// protected override void Write(string field, long value) { WriteAsText(field, XmlConvert.ToString(value), value); } /// /// Writes a UInt64 value /// protected override void Write(string field, ulong value) { WriteAsText(field, XmlConvert.ToString(value), value); } /// /// Writes a Single value /// protected override void Write(string field, float value) { WriteAsText(field, XmlConvert.ToString(value), value); } /// /// Writes a Double value /// protected override void Write(string field, double value) { WriteAsText(field, XmlConvert.ToString(value), value); } /// /// Writes a set of bytes /// protected override void Write(string field, ByteString value) { WriteAsText(field, EncodeBytes(value), value); } /// /// Writes a System.Enum by the numeric and textual value /// protected override void WriteEnum(string field, int number, string name) { WriteAsText(field, name, number); } } }