-
Notifications
You must be signed in to change notification settings - Fork 7
/
conv.go
382 lines (306 loc) · 8.93 KB
/
conv.go
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
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
package xunsafe
import (
"reflect"
"time"
"unsafe"
)
var (
typeTime = reflect.TypeOf(time.Time{})
typeTimePtr = reflect.TypeOf(&time.Time{})
)
//AsError casts pointer to error
func AsError(pointer unsafe.Pointer) error {
return *(*error)(pointer)
}
//AsErrorPtr casts pointer to *error
func AsErrorPtr(pointer unsafe.Pointer) *error {
return (*error)(pointer)
}
//AsErrorAddrPtr casts pointer to **error
func AsErrorAddrPtr(pointer unsafe.Pointer) **error {
return (**error)(pointer)
}
//AsInt casts pointer to int
func AsInt(pointer unsafe.Pointer) int {
return *(*int)(pointer)
}
//AsIntPtr casts pointer to *int
func AsIntPtr(pointer unsafe.Pointer) *int {
return (*int)(pointer)
}
//AsIntAddrPtr casts pointer to **int
func AsIntAddrPtr(pointer unsafe.Pointer) **int {
return (**int)(pointer)
}
//AsUint casts pointer to uint
func AsUint(pointer unsafe.Pointer) uint {
return *(*uint)(pointer)
}
//AsUintPtr casts pointer to *uint
func AsUintPtr(pointer unsafe.Pointer) *uint {
return (*uint)(pointer)
}
//AsUintAddrPtr casts pointer to **uint
func AsUintAddrPtr(pointer unsafe.Pointer) **uint {
return (**uint)(pointer)
}
//AsInt64 casts pointer to int64
func AsInt64(pointer unsafe.Pointer) int64 {
return *(*int64)(pointer)
}
//AsInt64Ptr casts pointer to *int64
func AsInt64Ptr(pointer unsafe.Pointer) *int64 {
return (*int64)(pointer)
}
//AsInt64AddrPtr casts pointer to **int64
func AsInt64AddrPtr(pointer unsafe.Pointer) **int64 {
return (**int64)(pointer)
}
//AsUint64 casts pointer to uint64
func AsUint64(pointer unsafe.Pointer) uint64 {
return *(*uint64)(pointer)
}
//AsUint64Ptr casts pointer to *uint
func AsUint64Ptr(pointer unsafe.Pointer) *uint64 {
return (*uint64)(pointer)
}
//AsUint64AddrPtr casts pointer to *uint
func AsUint64AddrPtr(pointer unsafe.Pointer) **uint64 {
return (**uint64)(pointer)
}
//AsInt32 casts pointer to int32
func AsInt32(pointer unsafe.Pointer) int32 {
return *(*int32)(pointer)
}
//AsInt32Ptr casts pointer to *int32
func AsInt32Ptr(pointer unsafe.Pointer) *int32 {
return (*int32)(pointer)
}
//AsInt32AddrPtr casts pointer to **int32
func AsInt32AddrPtr(pointer unsafe.Pointer) **int32 {
return (**int32)(pointer)
}
//AsUint32 casts pointer to uint32
func AsUint32(pointer unsafe.Pointer) uint32 {
return *(*uint32)(pointer)
}
//AsUint32Ptr casts pointer to *uint
func AsUint32Ptr(pointer unsafe.Pointer) *uint32 {
return (*uint32)(pointer)
}
//AsUint32AddrPtr casts pointer to *uint
func AsUint32AddrPtr(pointer unsafe.Pointer) **uint32 {
return (**uint32)(pointer)
}
//AsInt16 casts pointer to int16
func AsInt16(pointer unsafe.Pointer) int16 {
return *(*int16)(pointer)
}
//AsInt16Ptr casts pointer to *int16
func AsInt16Ptr(pointer unsafe.Pointer) *int16 {
return (*int16)(pointer)
}
//AsInt16AddrPtr casts pointer to *int16
func AsInt16AddrPtr(pointer unsafe.Pointer) **int16 {
return (**int16)(pointer)
}
//AsUint16 casts pointer to uint16
func AsUint16(pointer unsafe.Pointer) uint16 {
return *(*uint16)(pointer)
}
//AsUintptr casts pointer to uint16
func AsUintptr(pointer unsafe.Pointer) uintptr {
return *(*uintptr)(pointer)
}
//AsUint16Ptr casts pointer to *uint
func AsUint16Ptr(pointer unsafe.Pointer) *uint16 {
return (*uint16)(pointer)
}
//AsUint16AddrPtr casts pointer to **uint
func AsUint16AddrPtr(pointer unsafe.Pointer) **uint16 {
return (**uint16)(pointer)
}
//AsInt8 casts pointer to int8
func AsInt8(pointer unsafe.Pointer) int8 {
return *(*int8)(pointer)
}
//AsInt8Ptr casts pointer to *int8
func AsInt8Ptr(pointer unsafe.Pointer) *int8 {
return (*int8)(pointer)
}
//AsInt8AddrPtr casts pointer to *int8
func AsInt8AddrPtr(pointer unsafe.Pointer) **int8 {
return (**int8)(pointer)
}
//AsUint8 casts pointer to uint8
func AsUint8(pointer unsafe.Pointer) uint8 {
return *(*uint8)(pointer)
}
//AsUint8Ptr casts pointer to *uint
func AsUint8Ptr(pointer unsafe.Pointer) *uint8 {
return (*uint8)(pointer)
}
//AsUint8AddrPtr casts pointer to **uint
func AsUint8AddrPtr(pointer unsafe.Pointer) **uint8 {
return (**uint8)(pointer)
}
//AsFloat32 casts pointer to float32
func AsFloat32(pointer unsafe.Pointer) float32 {
return *(*float32)(pointer)
}
//AsFloat32Ptr casts pointer to *float32
func AsFloat32Ptr(pointer unsafe.Pointer) *float32 {
return (*float32)(pointer)
}
//AsFloat32AddrPtr casts pointer to **float32
func AsFloat32AddrPtr(pointer unsafe.Pointer) **float32 {
return (**float32)(pointer)
}
//AsFloat64 casts pointer to float64
func AsFloat64(pointer unsafe.Pointer) float64 {
return *(*float64)(pointer)
}
//AsFloat64Ptr casts pointer to *float64
func AsFloat64Ptr(pointer unsafe.Pointer) *float64 {
return (*float64)(pointer)
}
//AsFloat64AddrPtr casts pointer to **float64
func AsFloat64AddrPtr(pointer unsafe.Pointer) **float64 {
return (**float64)(pointer)
}
//AsBool casts pointer to bool
func AsBool(pointer unsafe.Pointer) bool {
return *(*bool)(pointer)
}
//AsBoolPtr casts pointer to *bool
func AsBoolPtr(pointer unsafe.Pointer) *bool {
return (*bool)(pointer)
}
//AsBoolAddrPtr casts pointer to **bool
func AsBoolAddrPtr(pointer unsafe.Pointer) **bool {
return (**bool)(pointer)
}
//AsString casts pointer to string
func AsString(pointer unsafe.Pointer) string {
return *(*string)(pointer)
}
//AsStringPtr casts pointer to *string
func AsStringPtr(pointer unsafe.Pointer) *string {
return (*string)(pointer)
}
//AsStringAddrPtr casts pointer to **string
func AsStringAddrPtr(pointer unsafe.Pointer) **string {
return (**string)(pointer)
}
//AsStrings casts pointer to string slice
func AsStrings(pointer unsafe.Pointer) []string {
return *(*[]string)(pointer)
}
//AsStringsPtr casts pointer to string slice pointer
func AsStringsPtr(pointer unsafe.Pointer) *[]string {
return (*[]string)(pointer)
}
//AsInts casts pointer to []int
func AsInts(pointer unsafe.Pointer) []int {
return *(*[]int)(pointer)
}
//AsIntsPtr casts pointer to int slice pointer
func AsIntsPtr(pointer unsafe.Pointer) *[]int {
return (*[]int)(pointer)
}
//AsUints casts pointer to uint slice
func AsUints(pointer unsafe.Pointer) []uint {
return *(*[]uint)(pointer)
}
//AsInt64s casts pointer to int64 slice
func AsInt64s(pointer unsafe.Pointer) []int64 {
return *(*[]int64)(pointer)
}
//AsUint64s casts pointer to uint64 slice
func AsUint64s(pointer unsafe.Pointer) []uint64 {
return *(*[]uint64)(pointer)
}
//AsInt32s casts pointer to int32 slice
func AsInt32s(pointer unsafe.Pointer) []int32 {
return *(*[]int32)(pointer)
}
//AsUint32s casts pointer to uint32 slice
func AsUint32s(pointer unsafe.Pointer) []uint32 {
return *(*[]uint32)(pointer)
}
//AsInt16s casts pointer to int16 slice
func AsInt16s(pointer unsafe.Pointer) []int16 {
return *(*[]int16)(pointer)
}
//AsUint16s casts pointer to uint16 slice
func AsUint16s(pointer unsafe.Pointer) []uint16 {
return *(*[]uint16)(pointer)
}
//AsInt8s casts pointer to int8 slice
func AsInt8s(pointer unsafe.Pointer) []int8 {
return *(*[]int8)(pointer)
}
//AsUint8s casts pointer to uint8 slice
func AsUint8s(pointer unsafe.Pointer) []uint8 {
return *(*[]uint8)(pointer)
}
//AsBytesPtr casts pointer to []byte pointer
func AsBytesPtr(pointer unsafe.Pointer) *[]byte {
return (*[]uint8)(pointer)
}
//AsBytesAddrPtr casts pointer to []byte pointer
func AsBytesAddrPtr(pointer unsafe.Pointer) **[]byte {
return (**[]uint8)(pointer)
}
//AsUint8Ptrs casts pointer to uint slice pointer
func AsUint8Ptrs(pointer unsafe.Pointer) *[]uint8 {
return (*[]uint8)(pointer)
}
//AsFloat32s casts pointer to float32 slice
func AsFloat32s(pointer unsafe.Pointer) []float32 {
return *(*[]float32)(pointer)
}
//AsFloat32sPtr casts pointer to float32 slice
func AsFloat32sPtr(pointer unsafe.Pointer) *[]float32 {
return (*[]float32)(pointer)
}
//AsFloat64s casts pointer to float64 slice
func AsFloat64s(pointer unsafe.Pointer) []float64 {
return *(*[]float64)(pointer)
}
//AsFloat64sPtr casts pointer to float64 slice pointer
func AsFloat64sPtr(pointer unsafe.Pointer) *[]float64 {
return (*[]float64)(pointer)
}
//AsBools casts pointer to bool slice
func AsBools(pointer unsafe.Pointer) []bool {
return *(*[]bool)(pointer)
}
//AsInterface casts pointer to interface
func AsInterface(pointer unsafe.Pointer) interface{} {
return *(*interface{})(pointer)
}
//AsInterfaces casts pointer to interface skuce
func AsInterfaces(pointer unsafe.Pointer) []interface{} {
return *(*[]interface{})(pointer)
}
//AsStringMap casts pointer to map[string]interface
func AsStringMap(pointer unsafe.Pointer) map[string]interface{} {
return *(*map[string]interface{})(pointer)
}
//AsMap casts pointer to map[string]interface
func AsMap(pointer unsafe.Pointer) map[interface{}]interface{} {
return *(*map[interface{}]interface{})(pointer)
}
//AsTime cast pointer to time.Time
func AsTime(pointer unsafe.Pointer) time.Time {
return *(*time.Time)(pointer)
}
//AsTimePtr cast pointer to *time.Time
func AsTimePtr(pointer unsafe.Pointer) *time.Time {
return (*time.Time)(pointer)
}
//AsTimeAddrPtr cast pointer to **time.Time
func AsTimeAddrPtr(pointer unsafe.Pointer) **time.Time {
return (**time.Time)(pointer)
}