blob: 75acc0f40faa23c5f43685f5e71c1a611e9236e3 [file] [log] [blame]
csharptest2b868842011-06-10 14:41:47 -05001using System;
2using System.Xml;
3
4namespace Google.ProtocolBuffers.Serialization
5{
6 /// <summary>
7 /// Provides a base class for text writers
8 /// </summary>
9 public abstract class AbstractTextWriter : AbstractWriter
10 {
11 /// <summary>
12 /// Encodes raw bytes to be written to the stream
13 /// </summary>
14 protected virtual string EncodeBytes(ByteString bytes) { return bytes.ToBase64(); }
15
16 /// <summary>
17 /// Writes a typed field as a text value
18 /// </summary>
19 protected abstract void WriteAsText(string field, string textValue, object typedValue);
20
21 /// <summary>
22 /// Writes a String value
23 /// </summary>
24 protected override void Write(string field, string value) { WriteAsText(field, value, value); }
25
26 /// <summary>
27 /// Writes a Boolean value
28 /// </summary>
29 protected override void Write(string field, bool value) { WriteAsText(field, XmlConvert.ToString(value), value); }
30
31 /// <summary>
32 /// Writes a Int32 value
33 /// </summary>
34 protected override void Write(string field, int value) { WriteAsText(field, XmlConvert.ToString(value), value); }
35
36 /// <summary>
37 /// Writes a UInt32 value
38 /// </summary>
39 [CLSCompliant(false)]
40 protected override void Write(string field, uint value) { WriteAsText(field, XmlConvert.ToString(value), value); }
41
42 /// <summary>
43 /// Writes a Int64 value
44 /// </summary>
45 protected override void Write(string field, long value) { WriteAsText(field, XmlConvert.ToString(value), value); }
46
47 /// <summary>
48 /// Writes a UInt64 value
49 /// </summary>
50 [CLSCompliant(false)]
51 protected override void Write(string field, ulong value) { WriteAsText(field, XmlConvert.ToString(value), value); }
52
53 /// <summary>
54 /// Writes a Single value
55 /// </summary>
56 protected override void Write(string field, float value) { WriteAsText(field, XmlConvert.ToString(value), value); }
57
58 /// <summary>
59 /// Writes a Double value
60 /// </summary>
61 protected override void Write(string field, double value) { WriteAsText(field, XmlConvert.ToString(value), value); }
62
63 /// <summary>
64 /// Writes a set of bytes
65 /// </summary>
66 protected override void Write(string field, ByteString value) { WriteAsText(field, EncodeBytes(value), value); }
67
68 /// <summary>
69 /// Writes a System.Enum by the numeric and textual value
70 /// </summary>
71 protected override void WriteEnum(string field, int number, string name) { WriteAsText(field, name, number); }
72 }
73}