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