From 30a2a24901e024dba8b40ca4102af9b4e64718c8 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 5 Jun 2022 10:02:53 -0600 Subject: fuss with formatting --- pkg/util/bitfield.go | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) (limited to 'pkg/util') diff --git a/pkg/util/bitfield.go b/pkg/util/bitfield.go index bf7812e..216837d 100644 --- a/pkg/util/bitfield.go +++ b/pkg/util/bitfield.go @@ -5,26 +5,45 @@ import ( "strings" ) -func BitfieldString[T ~uint8 | ~uint16 | ~uint32 | ~uint64](bitfield T, bitnames []string) string { +type BitfieldFormat uint8 + +const ( + HexNone = BitfieldFormat(iota) + HexLower + HexUpper +) + +func BitfieldString[T ~uint8 | ~uint16 | ~uint32 | ~uint64](bitfield T, bitnames []string, cfg BitfieldFormat) string { var out strings.Builder - fmt.Fprintf(&out, "0x%0x", uint64(bitfield)) + switch cfg { + case HexNone: + // do nothing + case HexLower: + fmt.Fprintf(&out, "0x%0x(", uint64(bitfield)) + case HexUpper: + fmt.Fprintf(&out, "0x%0X(", uint64(bitfield)) + } if bitfield == 0 { - out.WriteString("(none)") + out.WriteString("none") } else { rest := bitfield - sep := '(' + first := true for i := 0; rest != 0; i++ { if rest&(1<