lnd.xprv/htlcswitch/hodl/mask_dev.go
2018-10-05 13:04:45 +09:00

42 lines
798 B
Go

// +build dev
package hodl
import (
"fmt"
"strings"
)
// MaskFromFlags merges a variadic set of Flags into a single Mask.
func MaskFromFlags(flags ...Flag) Mask {
var mask Mask
for _, flag := range flags {
mask |= Mask(flag)
}
return mask
}
// Active returns true if the bit corresponding to the flag is set within the
// mask.
func (m Mask) Active(flag Flag) bool {
return (Flag(m) & flag) > 0
}
// String returns a human-readable description of all active Flags.
func (m Mask) String() string {
if m == MaskNone {
return "hodl.Mask(NONE)"
}
var activeFlags []string
for i := uint(0); i < 32; i++ {
flag := Flag(1 << i)
if m.Active(flag) {
activeFlags = append(activeFlags, flag.String())
}
}
return fmt.Sprintf("hodl.Mask(%s)", strings.Join(activeFlags, "|"))
}