github.com/decred/dcrlnd@v0.7.6/htlcswitch/hodl/mask_dev.go (about) 1 //go:build dev 2 // +build dev 3 4 package hodl 5 6 import ( 7 "fmt" 8 "strings" 9 ) 10 11 // MaskFromFlags merges a variadic set of Flags into a single Mask. 12 func MaskFromFlags(flags ...Flag) Mask { 13 var mask Mask 14 for _, flag := range flags { 15 mask |= Mask(flag) 16 } 17 18 return mask 19 } 20 21 // Active returns true if the bit corresponding to the flag is set within the 22 // mask. 23 func (m Mask) Active(flag Flag) bool { 24 return (Flag(m) & flag) > 0 25 } 26 27 // String returns a human-readable description of all active Flags. 28 func (m Mask) String() string { 29 if m == MaskNone { 30 return "hodl.Mask(NONE)" 31 } 32 33 var activeFlags []string 34 for i := uint(0); i < 32; i++ { 35 flag := Flag(1 << i) 36 if m.Active(flag) { 37 activeFlags = append(activeFlags, flag.String()) 38 } 39 } 40 41 return fmt.Sprintf("hodl.Mask(%s)", strings.Join(activeFlags, "|")) 42 }