StreamStore.cs
3.06 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
using System;
using System.IO;
using System.Text;
namespace UniJSON
{
public class StreamStore: IStore
{
Stream m_s;
BinaryWriter m_w;
public StreamStore(Stream s)
{
m_s = s;
m_w = new BinaryWriter(m_s);
}
public ArraySegment<byte> Bytes
{
get
{
#if NETFX_CORE
throw new NotImplementedException();
#else
var ms = m_s as MemoryStream;
if (ms == null)
{
throw new NotImplementedException();
}
return new ArraySegment<byte>(ms.GetBuffer(), 0, (int)ms.Position);
#endif
}
}
public void Clear()
{
m_s.SetLength(0);
}
public void Write(sbyte value)
{
m_w.Write(value);
}
public void Write(byte value)
{
m_w.Write(value);
}
public void Write(char c)
{
m_w.Write(c);
}
public void Write(string src)
{
m_w.Write(Encoding.UTF8.GetBytes(src));
}
public void Write(ArraySegment<byte> bytes)
{
m_w.Write(bytes.Array, bytes.Offset, bytes.Count);
}
#region BigEndian
public void WriteBigEndian(int value)
{
throw new NotImplementedException();
}
public void WriteBigEndian(float value)
{
throw new NotImplementedException();
}
public void WriteBigEndian(double value)
{
throw new NotImplementedException();
}
public void WriteBigEndian(long value)
{
throw new NotImplementedException();
}
public void WriteBigEndian(short value)
{
throw new NotImplementedException();
}
public void WriteBigEndian(uint value)
{
throw new NotImplementedException();
}
public void WriteBigEndian(ulong value)
{
throw new NotImplementedException();
}
public void WriteBigEndian(ushort value)
{
throw new NotImplementedException();
}
#endregion
#region LittleEndian
public void WriteLittleEndian(long value)
{
m_w.Write(value);
}
public void WriteLittleEndian(uint value)
{
m_w.Write(value);
}
public void WriteLittleEndian(short value)
{
m_w.Write(value);
}
public void WriteLittleEndian(ulong value)
{
m_w.Write(value);
}
public void WriteLittleEndian(double value)
{
m_w.Write(value);
}
public void WriteLittleEndian(float value)
{
m_w.Write(value);
}
public void WriteLittleEndian(int value)
{
m_w.Write(value);
}
public void WriteLittleEndian(ushort value)
{
m_w.Write(value);
}
#endregion
}
}