mirror of
https://github.com/json-iterator/go.git
synced 2025-02-19 19:59:49 +02:00
move any codec
This commit is contained in:
parent
08218647c3
commit
a016e87b9f
@ -5,6 +5,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"unsafe"
|
||||||
|
"github.com/v2pro/plz/reflect2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Any generic object representation.
|
// Any generic object representation.
|
||||||
@ -242,3 +244,40 @@ func locatePath(iter *Iterator, path []interface{}) Any {
|
|||||||
}
|
}
|
||||||
return iter.readAny()
|
return iter.readAny()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type anyCodec struct {
|
||||||
|
valType reflect2.Type
|
||||||
|
}
|
||||||
|
|
||||||
|
func (codec *anyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
|
||||||
|
panic("not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (codec *anyCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
|
||||||
|
obj := codec.valType.UnsafeIndirect(ptr)
|
||||||
|
any := obj.(Any)
|
||||||
|
any.WriteTo(stream)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (codec *anyCodec) IsEmpty(ptr unsafe.Pointer) bool {
|
||||||
|
obj := codec.valType.UnsafeIndirect(ptr)
|
||||||
|
any := obj.(Any)
|
||||||
|
return any.Size() == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type directAnyCodec struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (codec *directAnyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
|
||||||
|
*(*Any)(ptr) = iter.readAny()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (codec *directAnyCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
|
||||||
|
any := *(*Any)(ptr)
|
||||||
|
any.WriteTo(stream)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (codec *directAnyCodec) IsEmpty(ptr unsafe.Pointer) bool {
|
||||||
|
any := *(*Any)(ptr)
|
||||||
|
return any.Size() == 0
|
||||||
|
}
|
@ -369,43 +369,6 @@ func (encoder *dynamicEncoder) IsEmpty(ptr unsafe.Pointer) bool {
|
|||||||
return encoder.valType.UnsafeIndirect(ptr) == nil
|
return encoder.valType.UnsafeIndirect(ptr) == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type anyCodec struct {
|
|
||||||
valType reflect2.Type
|
|
||||||
}
|
|
||||||
|
|
||||||
func (codec *anyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
|
|
||||||
panic("not implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (codec *anyCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
|
|
||||||
obj := codec.valType.UnsafeIndirect(ptr)
|
|
||||||
any := obj.(Any)
|
|
||||||
any.WriteTo(stream)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (codec *anyCodec) IsEmpty(ptr unsafe.Pointer) bool {
|
|
||||||
obj := codec.valType.UnsafeIndirect(ptr)
|
|
||||||
any := obj.(Any)
|
|
||||||
return any.Size() == 0
|
|
||||||
}
|
|
||||||
|
|
||||||
type directAnyCodec struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (codec *directAnyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
|
|
||||||
*(*Any)(ptr) = iter.readAny()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (codec *directAnyCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
|
|
||||||
any := *(*Any)(ptr)
|
|
||||||
any.WriteTo(stream)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (codec *directAnyCodec) IsEmpty(ptr unsafe.Pointer) bool {
|
|
||||||
any := *(*Any)(ptr)
|
|
||||||
return any.Size() == 0
|
|
||||||
}
|
|
||||||
|
|
||||||
type jsonNumberCodec struct {
|
type jsonNumberCodec struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user