package gob
import (
)
var encArrayHelper = map[reflect.Kind]encHelper{
reflect.Bool: encBoolArray,
reflect.Complex64: encComplex64Array,
reflect.Complex128: encComplex128Array,
reflect.Float32: encFloat32Array,
reflect.Float64: encFloat64Array,
reflect.Int: encIntArray,
reflect.Int16: encInt16Array,
reflect.Int32: encInt32Array,
reflect.Int64: encInt64Array,
reflect.Int8: encInt8Array,
reflect.String: encStringArray,
reflect.Uint: encUintArray,
reflect.Uint16: encUint16Array,
reflect.Uint32: encUint32Array,
reflect.Uint64: encUint64Array,
reflect.Uintptr: encUintptrArray,
}
var encSliceHelper = map[reflect.Kind]encHelper{
reflect.Bool: encBoolSlice,
reflect.Complex64: encComplex64Slice,
reflect.Complex128: encComplex128Slice,
reflect.Float32: encFloat32Slice,
reflect.Float64: encFloat64Slice,
reflect.Int: encIntSlice,
reflect.Int16: encInt16Slice,
reflect.Int32: encInt32Slice,
reflect.Int64: encInt64Slice,
reflect.Int8: encInt8Slice,
reflect.String: encStringSlice,
reflect.Uint: encUintSlice,
reflect.Uint16: encUint16Slice,
reflect.Uint32: encUint32Slice,
reflect.Uint64: encUint64Slice,
reflect.Uintptr: encUintptrSlice,
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encBoolSlice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]bool)
if ! {
return false
}
for , := range {
if != false || .sendZero {
if {
.encodeUint(1)
} else {
.encodeUint(0)
}
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encComplex64Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]complex64)
if ! {
return false
}
for , := range {
if != 0+0i || .sendZero {
:= floatBits(float64(real()))
:= floatBits(float64(imag()))
.encodeUint()
.encodeUint()
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encComplex128Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]complex128)
if ! {
return false
}
for , := range {
if != 0+0i || .sendZero {
:= floatBits(real())
:= floatBits(imag())
.encodeUint()
.encodeUint()
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encFloat32Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]float32)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
:= floatBits(float64())
.encodeUint()
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encFloat64Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]float64)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
:= floatBits()
.encodeUint()
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encIntSlice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]int)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
.encodeInt(int64())
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encInt16Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]int16)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
.encodeInt(int64())
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encInt32Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]int32)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
.encodeInt(int64())
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encInt64Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]int64)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
.encodeInt()
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encInt8Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]int8)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
.encodeInt(int64())
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encStringSlice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]string)
if ! {
return false
}
for , := range {
if != "" || .sendZero {
.encodeUint(uint64(len()))
.b.WriteString()
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encUintSlice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]uint)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
.encodeUint(uint64())
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encUint16Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]uint16)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
.encodeUint(uint64())
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encUint32Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]uint32)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
.encodeUint(uint64())
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encUint64Slice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]uint64)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
.encodeUint()
}
}
return true
}
func ( *encoderState, reflect.Value) bool {
if !.CanAddr() {
return false
}
return encUintptrSlice(, .Slice(0, .Len()))
}
func ( *encoderState, reflect.Value) bool {
, := .Interface().([]uintptr)
if ! {
return false
}
for , := range {
if != 0 || .sendZero {
.encodeUint(uint64())
}
}
return true
}