Skip to content

Commit a016e87

Browse files
committed
move any codec
1 parent 0821864 commit a016e87

File tree

2 files changed

+39
-37
lines changed

2 files changed

+39
-37
lines changed

Diff for: feature_any.go

+39
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"fmt"
66
"io"
77
"reflect"
8+
"unsafe"
9+
"github.com/v2pro/plz/reflect2"
810
)
911

1012
// Any generic object representation.
@@ -242,3 +244,40 @@ func locatePath(iter *Iterator, path []interface{}) Any {
242244
}
243245
return iter.readAny()
244246
}
247+
248+
type anyCodec struct {
249+
valType reflect2.Type
250+
}
251+
252+
func (codec *anyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
253+
panic("not implemented")
254+
}
255+
256+
func (codec *anyCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
257+
obj := codec.valType.UnsafeIndirect(ptr)
258+
any := obj.(Any)
259+
any.WriteTo(stream)
260+
}
261+
262+
func (codec *anyCodec) IsEmpty(ptr unsafe.Pointer) bool {
263+
obj := codec.valType.UnsafeIndirect(ptr)
264+
any := obj.(Any)
265+
return any.Size() == 0
266+
}
267+
268+
type directAnyCodec struct {
269+
}
270+
271+
func (codec *directAnyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
272+
*(*Any)(ptr) = iter.readAny()
273+
}
274+
275+
func (codec *directAnyCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
276+
any := *(*Any)(ptr)
277+
any.WriteTo(stream)
278+
}
279+
280+
func (codec *directAnyCodec) IsEmpty(ptr unsafe.Pointer) bool {
281+
any := *(*Any)(ptr)
282+
return any.Size() == 0
283+
}

Diff for: feature_reflect_native.go

-37
Original file line numberDiff line numberDiff line change
@@ -369,43 +369,6 @@ func (encoder *dynamicEncoder) IsEmpty(ptr unsafe.Pointer) bool {
369369
return encoder.valType.UnsafeIndirect(ptr) == nil
370370
}
371371

372-
type anyCodec struct {
373-
valType reflect2.Type
374-
}
375-
376-
func (codec *anyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
377-
panic("not implemented")
378-
}
379-
380-
func (codec *anyCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
381-
obj := codec.valType.UnsafeIndirect(ptr)
382-
any := obj.(Any)
383-
any.WriteTo(stream)
384-
}
385-
386-
func (codec *anyCodec) IsEmpty(ptr unsafe.Pointer) bool {
387-
obj := codec.valType.UnsafeIndirect(ptr)
388-
any := obj.(Any)
389-
return any.Size() == 0
390-
}
391-
392-
type directAnyCodec struct {
393-
}
394-
395-
func (codec *directAnyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
396-
*(*Any)(ptr) = iter.readAny()
397-
}
398-
399-
func (codec *directAnyCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
400-
any := *(*Any)(ptr)
401-
any.WriteTo(stream)
402-
}
403-
404-
func (codec *directAnyCodec) IsEmpty(ptr unsafe.Pointer) bool {
405-
any := *(*Any)(ptr)
406-
return any.Size() == 0
407-
}
408-
409372
type jsonNumberCodec struct {
410373
}
411374

0 commit comments

Comments
 (0)