github.com/zerosnake0/jzon@v0.0.9-0.20230801092939-1b135cb83f7f/is_empty.go (about) 1 package jzon 2 3 import ( 4 "reflect" 5 "strconv" 6 "unsafe" 7 ) 8 9 type isEmptyFunc func(ptr unsafe.Pointer) bool 10 11 var ( 12 isEmptyFunctions = [numKinds]isEmptyFunc{} 13 ) 14 15 func init() { 16 isEmptyFunctions[reflect.Bool] = (*boolEncoder)(nil).IsEmpty 17 if strconv.IntSize == 32 { 18 isEmptyFunctions[reflect.Int] = (*int32Encoder)(nil).IsEmpty 19 isEmptyFunctions[reflect.Uint] = (*uint32Encoder)(nil).IsEmpty 20 } else { 21 isEmptyFunctions[reflect.Int] = (*int64Encoder)(nil).IsEmpty 22 isEmptyFunctions[reflect.Uint] = (*uint64Encoder)(nil).IsEmpty 23 } 24 isEmptyFunctions[reflect.Int8] = (*int8Encoder)(nil).IsEmpty 25 isEmptyFunctions[reflect.Int16] = (*int16Encoder)(nil).IsEmpty 26 isEmptyFunctions[reflect.Int32] = (*int32Encoder)(nil).IsEmpty 27 isEmptyFunctions[reflect.Int64] = (*int64Encoder)(nil).IsEmpty 28 isEmptyFunctions[reflect.Uint8] = (*uint8Encoder)(nil).IsEmpty 29 isEmptyFunctions[reflect.Uint16] = (*uint16Encoder)(nil).IsEmpty 30 isEmptyFunctions[reflect.Uint32] = (*uint32Encoder)(nil).IsEmpty 31 isEmptyFunctions[reflect.Uint64] = (*uint64Encoder)(nil).IsEmpty 32 if unsafe.Sizeof(uintptr(0)) == 4 { 33 isEmptyFunctions[reflect.Uintptr] = (*uint32Encoder)(nil).IsEmpty 34 } else { 35 isEmptyFunctions[reflect.Uintptr] = (*uint64Encoder)(nil).IsEmpty 36 } 37 isEmptyFunctions[reflect.Float32] = (*float32Encoder)(nil).IsEmpty 38 isEmptyFunctions[reflect.Float64] = (*float64Encoder)(nil).IsEmpty 39 isEmptyFunctions[reflect.Array] = (*arrayEncoder)(nil).IsEmpty 40 isEmptyFunctions[reflect.Map] = (*directMapEncoder)(nil).IsEmpty 41 isEmptyFunctions[reflect.Slice] = (*sliceEncoder)(nil).IsEmpty 42 isEmptyFunctions[reflect.Struct] = (*structEncoder)(nil).IsEmpty 43 // Interface 44 // Ptr 45 }