...
1 package flatbuffers
2
3 import (
4 "math"
5 )
6
7 type (
8
9 SOffsetT int32
10
11 UOffsetT uint32
12
13 VOffsetT uint16
14 )
15
16 const (
17
18 VtableMetadataFields = 2
19 )
20
21
22 func GetByte(buf []byte) byte {
23 return byte(GetUint8(buf))
24 }
25
26
27 func GetBool(buf []byte) bool {
28 return buf[0] == 1
29 }
30
31
32 func GetUint8(buf []byte) (n uint8) {
33 n = uint8(buf[0])
34 return
35 }
36
37
38 func GetUint16(buf []byte) (n uint16) {
39 _ = buf[1]
40 n |= uint16(buf[0])
41 n |= uint16(buf[1]) << 8
42 return
43 }
44
45
46 func GetUint32(buf []byte) (n uint32) {
47 _ = buf[3]
48 n |= uint32(buf[0])
49 n |= uint32(buf[1]) << 8
50 n |= uint32(buf[2]) << 16
51 n |= uint32(buf[3]) << 24
52 return
53 }
54
55
56 func GetUint64(buf []byte) (n uint64) {
57 _ = buf[7]
58 n |= uint64(buf[0])
59 n |= uint64(buf[1]) << 8
60 n |= uint64(buf[2]) << 16
61 n |= uint64(buf[3]) << 24
62 n |= uint64(buf[4]) << 32
63 n |= uint64(buf[5]) << 40
64 n |= uint64(buf[6]) << 48
65 n |= uint64(buf[7]) << 56
66 return
67 }
68
69
70 func GetInt8(buf []byte) (n int8) {
71 n = int8(buf[0])
72 return
73 }
74
75
76 func GetInt16(buf []byte) (n int16) {
77 _ = buf[1]
78 n |= int16(buf[0])
79 n |= int16(buf[1]) << 8
80 return
81 }
82
83
84 func GetInt32(buf []byte) (n int32) {
85 _ = buf[3]
86 n |= int32(buf[0])
87 n |= int32(buf[1]) << 8
88 n |= int32(buf[2]) << 16
89 n |= int32(buf[3]) << 24
90 return
91 }
92
93
94 func GetInt64(buf []byte) (n int64) {
95 _ = buf[7]
96 n |= int64(buf[0])
97 n |= int64(buf[1]) << 8
98 n |= int64(buf[2]) << 16
99 n |= int64(buf[3]) << 24
100 n |= int64(buf[4]) << 32
101 n |= int64(buf[5]) << 40
102 n |= int64(buf[6]) << 48
103 n |= int64(buf[7]) << 56
104 return
105 }
106
107
108 func GetFloat32(buf []byte) float32 {
109 x := GetUint32(buf)
110 return math.Float32frombits(x)
111 }
112
113
114 func GetFloat64(buf []byte) float64 {
115 x := GetUint64(buf)
116 return math.Float64frombits(x)
117 }
118
119
120 func GetUOffsetT(buf []byte) UOffsetT {
121 return UOffsetT(GetUint32(buf))
122 }
123
124
125 func GetSOffsetT(buf []byte) SOffsetT {
126 return SOffsetT(GetInt32(buf))
127 }
128
129
130 func GetVOffsetT(buf []byte) VOffsetT {
131 return VOffsetT(GetUint16(buf))
132 }
133
134
135 func WriteByte(buf []byte, n byte) {
136 WriteUint8(buf, uint8(n))
137 }
138
139
140 func WriteBool(buf []byte, b bool) {
141 buf[0] = 0
142 if b {
143 buf[0] = 1
144 }
145 }
146
147
148 func WriteUint8(buf []byte, n uint8) {
149 buf[0] = byte(n)
150 }
151
152
153 func WriteUint16(buf []byte, n uint16) {
154 _ = buf[1]
155 buf[0] = byte(n)
156 buf[1] = byte(n >> 8)
157 }
158
159
160 func WriteUint32(buf []byte, n uint32) {
161 _ = buf[3]
162 buf[0] = byte(n)
163 buf[1] = byte(n >> 8)
164 buf[2] = byte(n >> 16)
165 buf[3] = byte(n >> 24)
166 }
167
168
169 func WriteUint64(buf []byte, n uint64) {
170 _ = buf[7]
171 buf[0] = byte(n)
172 buf[1] = byte(n >> 8)
173 buf[2] = byte(n >> 16)
174 buf[3] = byte(n >> 24)
175 buf[4] = byte(n >> 32)
176 buf[5] = byte(n >> 40)
177 buf[6] = byte(n >> 48)
178 buf[7] = byte(n >> 56)
179 }
180
181
182 func WriteInt8(buf []byte, n int8) {
183 buf[0] = byte(n)
184 }
185
186
187 func WriteInt16(buf []byte, n int16) {
188 _ = buf[1]
189 buf[0] = byte(n)
190 buf[1] = byte(n >> 8)
191 }
192
193
194 func WriteInt32(buf []byte, n int32) {
195 _ = buf[3]
196 buf[0] = byte(n)
197 buf[1] = byte(n >> 8)
198 buf[2] = byte(n >> 16)
199 buf[3] = byte(n >> 24)
200 }
201
202
203 func WriteInt64(buf []byte, n int64) {
204 _ = buf[7]
205 buf[0] = byte(n)
206 buf[1] = byte(n >> 8)
207 buf[2] = byte(n >> 16)
208 buf[3] = byte(n >> 24)
209 buf[4] = byte(n >> 32)
210 buf[5] = byte(n >> 40)
211 buf[6] = byte(n >> 48)
212 buf[7] = byte(n >> 56)
213 }
214
215
216 func WriteFloat32(buf []byte, n float32) {
217 WriteUint32(buf, math.Float32bits(n))
218 }
219
220
221 func WriteFloat64(buf []byte, n float64) {
222 WriteUint64(buf, math.Float64bits(n))
223 }
224
225
226 func WriteVOffsetT(buf []byte, n VOffsetT) {
227 WriteUint16(buf, uint16(n))
228 }
229
230
231 func WriteSOffsetT(buf []byte, n SOffsetT) {
232 WriteInt32(buf, int32(n))
233 }
234
235
236 func WriteUOffsetT(buf []byte, n UOffsetT) {
237 WriteUint32(buf, uint32(n))
238 }
239
View as plain text