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  }