|
@@ -19,6 +19,10 @@ func (encoder *stringCodec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *stringCodec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*string)(ptr)) == ""
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type intCodec struct {
|
|
type intCodec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -34,6 +38,10 @@ func (encoder *intCodec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *intCodec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*int)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type int8Codec struct {
|
|
type int8Codec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -49,6 +57,10 @@ func (encoder *int8Codec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *int8Codec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*int8)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type int16Codec struct {
|
|
type int16Codec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -64,6 +76,10 @@ func (encoder *int16Codec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *int16Codec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*int16)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type int32Codec struct {
|
|
type int32Codec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -79,6 +95,10 @@ func (encoder *int32Codec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *int32Codec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*int32)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type int64Codec struct {
|
|
type int64Codec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -94,6 +114,10 @@ func (encoder *int64Codec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *int64Codec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*int64)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type uintCodec struct {
|
|
type uintCodec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -109,6 +133,10 @@ func (encoder *uintCodec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *uintCodec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*uint)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type uint8Codec struct {
|
|
type uint8Codec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -124,6 +152,10 @@ func (encoder *uint8Codec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *uint8Codec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*uint8)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type uint16Codec struct {
|
|
type uint16Codec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -139,6 +171,10 @@ func (encoder *uint16Codec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *uint16Codec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*uint16)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type uint32Codec struct {
|
|
type uint32Codec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -154,6 +190,10 @@ func (encoder *uint32Codec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *uint32Codec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*uint32)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type uint64Codec struct {
|
|
type uint64Codec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -169,6 +209,10 @@ func (encoder *uint64Codec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *uint64Codec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*uint64)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type float32Codec struct {
|
|
type float32Codec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -184,6 +228,10 @@ func (encoder *float32Codec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *float32Codec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*float32)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type float64Codec struct {
|
|
type float64Codec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -199,6 +247,10 @@ func (encoder *float64Codec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *float64Codec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return *((*float64)(ptr)) == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type boolCodec struct {
|
|
type boolCodec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -214,6 +266,10 @@ func (encoder *boolCodec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
WriteToStream(val, stream, encoder)
|
|
WriteToStream(val, stream, encoder)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *boolCodec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return !(*((*bool)(ptr)))
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type interfaceCodec struct {
|
|
type interfaceCodec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -229,6 +285,10 @@ func (encoder *interfaceCodec) encodeInterface(val interface{}, stream *Stream)
|
|
|
stream.WriteVal(val)
|
|
stream.WriteVal(val)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (codec *interfaceCodec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return ptr == nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type anyCodec struct {
|
|
type anyCodec struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -244,6 +304,10 @@ func (encoder *anyCodec) encodeInterface(val interface{}, stream *Stream) {
|
|
|
(val.(Any)).WriteTo(stream)
|
|
(val.(Any)).WriteTo(stream)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (encoder *anyCodec) isEmpty(ptr unsafe.Pointer) bool {
|
|
|
|
|
+ return (*((*Any)(ptr))).Size() == 0
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
type stringNumberDecoder struct {
|
|
type stringNumberDecoder struct {
|
|
|
elemDecoder Decoder
|
|
elemDecoder Decoder
|
|
|
}
|
|
}
|