You've already forked json-iterator
mirror of
https://github.com/json-iterator/go.git
synced 2025-07-15 23:54:21 +02:00
remove sliceHeader
This commit is contained in:
@ -493,15 +493,13 @@ func (codec *jsoniterRawMessageCodec) IsEmpty(ptr unsafe.Pointer) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type base64Codec struct {
|
type base64Codec struct {
|
||||||
|
sliceType *reflect2.UnsafeSliceType
|
||||||
sliceDecoder ValDecoder
|
sliceDecoder ValDecoder
|
||||||
}
|
}
|
||||||
|
|
||||||
func (codec *base64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
|
func (codec *base64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
|
||||||
if iter.ReadNil() {
|
if iter.ReadNil() {
|
||||||
ptrSlice := (*sliceHeader)(ptr)
|
codec.sliceType.UnsafeSetNil(ptr)
|
||||||
ptrSlice.Len = 0
|
|
||||||
ptrSlice.Cap = 0
|
|
||||||
ptrSlice.Data = nil
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch iter.WhatIsNext() {
|
switch iter.WhatIsNext() {
|
||||||
@ -516,11 +514,7 @@ func (codec *base64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
|
|||||||
iter.ReportError("decode base64", err.Error())
|
iter.ReportError("decode base64", err.Error())
|
||||||
} else {
|
} else {
|
||||||
dst = dst[:len]
|
dst = dst[:len]
|
||||||
dstSlice := (*sliceHeader)(unsafe.Pointer(&dst))
|
codec.sliceType.UnsafeSet(ptr, unsafe.Pointer(&dst))
|
||||||
ptrSlice := (*sliceHeader)(ptr)
|
|
||||||
ptrSlice.Data = dstSlice.Data
|
|
||||||
ptrSlice.Cap = dstSlice.Cap
|
|
||||||
ptrSlice.Len = dstSlice.Len
|
|
||||||
}
|
}
|
||||||
case ArrayValue:
|
case ArrayValue:
|
||||||
codec.sliceDecoder.Decode(ptr, iter)
|
codec.sliceDecoder.Decode(ptr, iter)
|
||||||
|
@ -49,8 +49,7 @@ func (encoder *sliceEncoder) Encode(ptr unsafe.Pointer, stream *Stream) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (encoder *sliceEncoder) IsEmpty(ptr unsafe.Pointer) bool {
|
func (encoder *sliceEncoder) IsEmpty(ptr unsafe.Pointer) bool {
|
||||||
slice := (*sliceHeader)(ptr)
|
return encoder.sliceType.UnsafeLengthOf(ptr) == 0
|
||||||
return slice.Len == 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type sliceDecoder struct {
|
type sliceDecoder struct {
|
||||||
@ -58,13 +57,6 @@ type sliceDecoder struct {
|
|||||||
elemDecoder ValDecoder
|
elemDecoder ValDecoder
|
||||||
}
|
}
|
||||||
|
|
||||||
// sliceHeader is a safe version of SliceHeader used within this package.
|
|
||||||
type sliceHeader struct {
|
|
||||||
Data unsafe.Pointer
|
|
||||||
Len int
|
|
||||||
Cap int
|
|
||||||
}
|
|
||||||
|
|
||||||
func (decoder *sliceDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) {
|
func (decoder *sliceDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) {
|
||||||
decoder.doDecode(ptr, iter)
|
decoder.doDecode(ptr, iter)
|
||||||
if iter.Error != nil && iter.Error != io.EOF {
|
if iter.Error != nil && iter.Error != io.EOF {
|
||||||
|
Reference in New Issue
Block a user