-
Notifications
You must be signed in to change notification settings - Fork 83
Expand file tree
/
Copy pathISerializer.cs
More file actions
232 lines (196 loc) · 5.13 KB
/
ISerializer.cs
File metadata and controls
232 lines (196 loc) · 5.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
using System;
using System.Text;
namespace Waher.Persistence.Serialization
{
/// <summary>
/// Interface for serializers.
/// </summary>
public interface ISerializer
{
/// <summary>
/// Name of current collection.
/// </summary>
string CollectionName
{
get;
}
/// <summary>
/// Text encoding to use when serializing strings.
/// </summary>
Encoding Encoding
{
get;
}
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(bool Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(byte Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(short Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(int Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(long Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(sbyte Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(ushort Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(uint Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(ulong Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(decimal Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(double Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(float Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(DateTime Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(DateTimeOffset Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(TimeSpan Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(char Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(Enum Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(byte[] Value);
/// <summary>
/// Writes some bytes to the output.
/// </summary>
/// <param name="Data">Data to write.</param>
void WriteRaw(byte[] Data);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(string Value);
/// <summary>
/// Serializes a value.
/// </summary>
/// <param name="Value">Value</param>
void Write(Guid Value);
/// <summary>
/// Serializes a variable-length 16-bit signed integer value.
/// </summary>
/// <param name="Value">Value</param>
void WriteVariableLengthInt16(short Value);
/// <summary>
/// Serializes a variable-length 32-bit signed integer value.
/// </summary>
/// <param name="Value">Value</param>
void WriteVariableLengthInt32(int Value);
/// <summary>
/// Serializes a variable-length 64-bit signed integer value.
/// </summary>
/// <param name="Value">Value</param>
void WriteVariableLengthInt64(long Value);
/// <summary>
/// Serializes a variable-length 16-bit unsigned integer value.
/// </summary>
/// <param name="Value">Value</param>
void WriteVariableLengthUInt16(ushort Value);
/// <summary>
/// Serializes a variable-length 32-bit unsigned integer value.
/// </summary>
/// <param name="Value">Value</param>
void WriteVariableLengthUInt32(uint Value);
/// <summary>
/// Serializes a variable-length 64-bit unsigned integer value.
/// </summary>
/// <param name="Value">Value</param>
void WriteVariableLengthUInt64(ulong Value);
/// <summary>
/// Serializes a bit.
/// </summary>
/// <param name="Bit">Bit value.</param>
void WriteBit(bool Bit);
/// <summary>
/// Serializes a value consisting of a fixed number of bits.
/// </summary>
/// <param name="Value">Bit field value.</param>
/// <param name="NrBits">Number of bits to serialize.</param>
void WriteBits(uint Value, int NrBits);
/// <summary>
/// Flushes any bit field values.
/// </summary>
void FlushBits();
/// <summary>
/// Current bit-offset.
/// </summary>
int BitOffset
{
get;
}
/// <summary>
/// Resets the serializer, allowing for the serialization of another object using the same resources.
/// </summary>
void Restart();
/// <summary>
/// Gets the binary serialization.
/// </summary>
/// <returns>Binary serialization.</returns>
byte[] GetSerialization();
/// <summary>
/// Creates a new serializer of the same type and properties.
/// </summary>
/// <returns>Serializer</returns>
ISerializer CreateNew();
}
}