// Code generated by go run encgen.go -output enc_helpers.go; DO NOT EDIT. // Copyright 2014 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package gob import ( "reflect" ) 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 encBoolArray(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encBoolSlice(state, v.Slice(0, v.Len())) } func encBoolSlice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]bool) if !ok { // It is kind bool but not type bool. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != false || state.sendZero { if x { state.encodeUint(1) } else { state.encodeUint(0) } } } return true } func encComplex64Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encComplex64Slice(state, v.Slice(0, v.Len())) } func encComplex64Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]complex64) if !ok { // It is kind complex64 but not type complex64. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0+0i || state.sendZero { rpart := floatBits(float64(real(x))) ipart := floatBits(float64(imag(x))) state.encodeUint(rpart) state.encodeUint(ipart) } } return true } func encComplex128Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encComplex128Slice(state, v.Slice(0, v.Len())) } func encComplex128Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]complex128) if !ok { // It is kind complex128 but not type complex128. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0+0i || state.sendZero { rpart := floatBits(real(x)) ipart := floatBits(imag(x)) state.encodeUint(rpart) state.encodeUint(ipart) } } return true } func encFloat32Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encFloat32Slice(state, v.Slice(0, v.Len())) } func encFloat32Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]float32) if !ok { // It is kind float32 but not type float32. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { bits := floatBits(float64(x)) state.encodeUint(bits) } } return true } func encFloat64Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encFloat64Slice(state, v.Slice(0, v.Len())) } func encFloat64Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]float64) if !ok { // It is kind float64 but not type float64. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { bits := floatBits(x) state.encodeUint(bits) } } return true } func encIntArray(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encIntSlice(state, v.Slice(0, v.Len())) } func encIntSlice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]int) if !ok { // It is kind int but not type int. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { state.encodeInt(int64(x)) } } return true } func encInt16Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encInt16Slice(state, v.Slice(0, v.Len())) } func encInt16Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]int16) if !ok { // It is kind int16 but not type int16. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { state.encodeInt(int64(x)) } } return true } func encInt32Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encInt32Slice(state, v.Slice(0, v.Len())) } func encInt32Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]int32) if !ok { // It is kind int32 but not type int32. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { state.encodeInt(int64(x)) } } return true } func encInt64Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encInt64Slice(state, v.Slice(0, v.Len())) } func encInt64Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]int64) if !ok { // It is kind int64 but not type int64. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { state.encodeInt(x) } } return true } func encInt8Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encInt8Slice(state, v.Slice(0, v.Len())) } func encInt8Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]int8) if !ok { // It is kind int8 but not type int8. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { state.encodeInt(int64(x)) } } return true } func encStringArray(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encStringSlice(state, v.Slice(0, v.Len())) } func encStringSlice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]string) if !ok { // It is kind string but not type string. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != "" || state.sendZero { state.encodeUint(uint64(len(x))) state.b.WriteString(x) } } return true } func encUintArray(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encUintSlice(state, v.Slice(0, v.Len())) } func encUintSlice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]uint) if !ok { // It is kind uint but not type uint. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { state.encodeUint(uint64(x)) } } return true } func encUint16Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encUint16Slice(state, v.Slice(0, v.Len())) } func encUint16Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]uint16) if !ok { // It is kind uint16 but not type uint16. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { state.encodeUint(uint64(x)) } } return true } func encUint32Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encUint32Slice(state, v.Slice(0, v.Len())) } func encUint32Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]uint32) if !ok { // It is kind uint32 but not type uint32. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { state.encodeUint(uint64(x)) } } return true } func encUint64Array(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encUint64Slice(state, v.Slice(0, v.Len())) } func encUint64Slice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]uint64) if !ok { // It is kind uint64 but not type uint64. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { state.encodeUint(x) } } return true } func encUintptrArray(state *encoderState, v reflect.Value) bool { // Can only slice if it is addressable. if !v.CanAddr() { return false } return encUintptrSlice(state, v.Slice(0, v.Len())) } func encUintptrSlice(state *encoderState, v reflect.Value) bool { slice, ok := v.Interface().([]uintptr) if !ok { // It is kind uintptr but not type uintptr. TODO: We can handle this unsafely. return false } for _, x := range slice { if x != 0 || state.sendZero { state.encodeUint(uint64(x)) } } return true }