From 3825cf60fd652f22acc438d50028701d27a7402d Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 1 Jun 2022 01:27:19 -0600 Subject: wow --- pkg/util/bitfield.go | 31 +++++++++++++++++++++++++++++++ pkg/util/int.go | 3 +++ pkg/util/ref.go | 29 +++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 pkg/util/bitfield.go create mode 100644 pkg/util/int.go create mode 100644 pkg/util/ref.go (limited to 'pkg/util') diff --git a/pkg/util/bitfield.go b/pkg/util/bitfield.go new file mode 100644 index 0000000..5e2ba06 --- /dev/null +++ b/pkg/util/bitfield.go @@ -0,0 +1,31 @@ +package util + +import ( + "fmt" + "strings" +) + +func BitfieldString[T ~uint8 | ~uint16 | ~uint32 | ~uint64](bitfield T, bitnames []string) string { + var out strings.Builder + fmt.Fprintf(&out, "0x%0X", uint64(bitfield)) + if bitfield == 0 { + out.WriteString("(none)") + } else { + rest := bitfield + sep := '(' + for i := 0; rest != 0; i++ { + if rest&(1<