From 8f786bb8601c3b449cd2031b181b5ce7b17b2da5 Mon Sep 17 00:00:00 2001 From: Conner Fromknecht Date: Sun, 29 Apr 2018 04:58:36 -0700 Subject: [PATCH] htlcswitch/hodl/mask_debug: enable Mask w/ debug flag --- htlcswitch/hodl/mask_debug.go | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 htlcswitch/hodl/mask_debug.go diff --git a/htlcswitch/hodl/mask_debug.go b/htlcswitch/hodl/mask_debug.go new file mode 100644 index 00000000..5d5fd065 --- /dev/null +++ b/htlcswitch/hodl/mask_debug.go @@ -0,0 +1,44 @@ +// +build debug + +package hodl + +import ( + "fmt" + "strings" +) + +// DebugBuild signals that this is a debug build. +const DebugBuild = true + +// 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, "|")) +}