podman
1package pretty
2
3import (
4"reflect"
5)
6
7func nonzero(v reflect.Value) bool {
8switch v.Kind() {
9case reflect.Bool:
10return v.Bool()
11case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
12return v.Int() != 0
13case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
14return v.Uint() != 0
15case reflect.Float32, reflect.Float64:
16return v.Float() != 0
17case reflect.Complex64, reflect.Complex128:
18return v.Complex() != complex(0, 0)
19case reflect.String:
20return v.String() != ""
21case reflect.Struct:
22for i := 0; i < v.NumField(); i++ {
23if nonzero(getField(v, i)) {
24return true
25}
26}
27return false
28case reflect.Array:
29for i := 0; i < v.Len(); i++ {
30if nonzero(v.Index(i)) {
31return true
32}
33}
34return false
35case reflect.Map, reflect.Interface, reflect.Slice, reflect.Ptr, reflect.Chan, reflect.Func:
36return !v.IsNil()
37case reflect.UnsafePointer:
38return v.Pointer() != 0
39}
40return true
41}
42