github.com/urso/go-structform@v0.0.2/gotype/fold_arr.go (about) 1 package gotype 2 3 import ( 4 "reflect" 5 6 structform "github.com/urso/go-structform" 7 ) 8 9 var ( 10 reFoldArrBool = liftFold([]bool(nil), foldArrBool) 11 reFoldArrInt = liftFold([]int(nil), foldArrInt) 12 reFoldArrInt8 = liftFold([]int8(nil), foldArrInt8) 13 reFoldArrInt16 = liftFold([]int16(nil), foldArrInt16) 14 reFoldArrInt32 = liftFold([]int32(nil), foldArrInt32) 15 reFoldArrInt64 = liftFold([]int64(nil), foldArrInt64) 16 reFoldArrUint = liftFold([]uint(nil), foldArrUint) 17 reFoldArrUint8 = liftFold([]uint8(nil), foldArrUint8) 18 reFoldArrUint16 = liftFold([]uint16(nil), foldArrUint16) 19 reFoldArrUint32 = liftFold([]uint32(nil), foldArrUint32) 20 reFoldArrUint64 = liftFold([]uint64(nil), foldArrUint64) 21 reFoldArrFloat32 = liftFold([]float32(nil), foldArrFloat32) 22 reFoldArrFloat64 = liftFold([]float64(nil), foldArrFloat64) 23 reFoldArrString = liftFold([]string(nil), foldArrString) 24 ) 25 26 var tArrayAny = reflect.TypeOf([]interface{}(nil)) 27 28 func foldArrInterface(C *foldContext, v interface{}) error { 29 a := v.([]interface{}) 30 if err := C.OnArrayStart(len(a), structform.AnyType); err != nil { 31 return err 32 } 33 34 for _, v := range a { 35 if err := foldInterfaceValue(C, v); err != nil { 36 return err 37 } 38 } 39 return C.OnArrayFinished() 40 } 41 42 func foldArrBool(C *foldContext, v interface{}) error { return C.visitor.OnBoolArray(v.([]bool)) } 43 func foldArrString(C *foldContext, v interface{}) error { return C.visitor.OnStringArray(v.([]string)) } 44 func foldArrInt8(C *foldContext, v interface{}) error { return C.visitor.OnInt8Array(v.([]int8)) } 45 func foldArrInt16(C *foldContext, v interface{}) error { return C.visitor.OnInt16Array(v.([]int16)) } 46 func foldArrInt32(C *foldContext, v interface{}) error { return C.visitor.OnInt32Array(v.([]int32)) } 47 func foldArrInt64(C *foldContext, v interface{}) error { return C.visitor.OnInt64Array(v.([]int64)) } 48 func foldArrInt(C *foldContext, v interface{}) error { return C.visitor.OnIntArray(v.([]int)) } 49 func foldBytes(C *foldContext, v interface{}) error { return C.visitor.OnBytes(v.([]byte)) } 50 func foldArrUint8(C *foldContext, v interface{}) error { return C.visitor.OnUint8Array(v.([]uint8)) } 51 func foldArrUint16(C *foldContext, v interface{}) error { return C.visitor.OnUint16Array(v.([]uint16)) } 52 func foldArrUint32(C *foldContext, v interface{}) error { return C.visitor.OnUint32Array(v.([]uint32)) } 53 func foldArrUint64(C *foldContext, v interface{}) error { return C.visitor.OnUint64Array(v.([]uint64)) } 54 func foldArrUint(C *foldContext, v interface{}) error { return C.visitor.OnUintArray(v.([]uint)) } 55 func foldArrFloat32(C *foldContext, v interface{}) error { 56 return C.visitor.OnFloat32Array(v.([]float32)) 57 } 58 func foldArrFloat64(C *foldContext, v interface{}) error { 59 return C.visitor.OnFloat64Array(v.([]float64)) 60 }