MCPcopy Create free account
hub / github.com/segmentio/encoding / emptyFuncOf

Function emptyFuncOf

json/codec.go:898–954  ·  view source on GitHub ↗
(t reflect.Type)

Source from the content-addressed store, hash-verified

896}
897
898func emptyFuncOf(t reflect.Type) emptyFunc {
899 switch t {
900 case bytesType, rawMessageType:
901 return func(p unsafe.Pointer) bool { return (*slice)(p).len == 0 }
902 }
903
904 switch t.Kind() {
905 case reflect.Array:
906 if t.Len() == 0 {
907 return func(unsafe.Pointer) bool { return true }
908 }
909
910 case reflect.Map:
911 return func(p unsafe.Pointer) bool { return reflect.NewAt(t, p).Elem().Len() == 0 }
912
913 case reflect.Slice:
914 return func(p unsafe.Pointer) bool { return (*slice)(p).len == 0 }
915
916 case reflect.String:
917 return func(p unsafe.Pointer) bool { return len(*(*string)(p)) == 0 }
918
919 case reflect.Bool:
920 return func(p unsafe.Pointer) bool { return !*(*bool)(p) }
921
922 case reflect.Int, reflect.Uint:
923 return func(p unsafe.Pointer) bool { return *(*uint)(p) == 0 }
924
925 case reflect.Uintptr:
926 return func(p unsafe.Pointer) bool { return *(*uintptr)(p) == 0 }
927
928 case reflect.Int8, reflect.Uint8:
929 return func(p unsafe.Pointer) bool { return *(*uint8)(p) == 0 }
930
931 case reflect.Int16, reflect.Uint16:
932 return func(p unsafe.Pointer) bool { return *(*uint16)(p) == 0 }
933
934 case reflect.Int32, reflect.Uint32:
935 return func(p unsafe.Pointer) bool { return *(*uint32)(p) == 0 }
936
937 case reflect.Int64, reflect.Uint64:
938 return func(p unsafe.Pointer) bool { return *(*uint64)(p) == 0 }
939
940 case reflect.Float32:
941 return func(p unsafe.Pointer) bool { return *(*float32)(p) == 0 }
942
943 case reflect.Float64:
944 return func(p unsafe.Pointer) bool { return *(*float64)(p) == 0 }
945
946 case reflect.Ptr:
947 return func(p unsafe.Pointer) bool { return *(*unsafe.Pointer)(p) == nil }
948
949 case reflect.Interface:
950 return func(p unsafe.Pointer) bool { return (*iface)(p).ptr == nil }
951 }
952
953 return func(unsafe.Pointer) bool { return false }
954}
955

Callers 1

appendStructFieldsFunction · 0.85

Calls 3

KindMethod · 0.65
ElemMethod · 0.65
LenMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…