diff options
| author | Ophestra Umiker <cat@ophivana.moe> | 2024-10-16 14:38:57 +0900 |
|---|---|---|
| committer | Ophestra Umiker <cat@ophivana.moe> | 2024-10-16 14:38:57 +0900 |
| commit | c21168a74181903535c63f49c5a6d3bd2052c883 (patch) | |
| tree | 6ed272c6a4d3712624077cf39794d7d1eb22295f /internal/system/enablement.go | |
| parent | 084cd84f36a1d608541b4aa4e1e95334395d8953 (diff) | |
system: move enablements from state package
This removes the unnecessary import of the state package.
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
Diffstat (limited to 'internal/system/enablement.go')
| -rw-r--r-- | internal/system/enablement.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/internal/system/enablement.go b/internal/system/enablement.go new file mode 100644 index 00000000..7876f6b5 --- /dev/null +++ b/internal/system/enablement.go @@ -0,0 +1,46 @@ +package system + +type ( + // Enablement represents an optional system resource + Enablement uint8 + // Enablements represents optional system resources to share + Enablements uint64 +) + +const ( + EWayland Enablement = iota + EX11 + EDBus + EPulse +) + +var enablementString = [...]string{ + EWayland: "Wayland", + EX11: "X11", + EDBus: "D-Bus", + EPulse: "PulseAudio", +} + +const ELen = len(enablementString) + +func (e Enablement) String() string { + return enablementString[e] +} + +func (e Enablement) Mask() Enablements { + return 1 << e +} + +// Has returns whether a feature is enabled +func (es *Enablements) Has(e Enablement) bool { + return *es&e.Mask() != 0 +} + +// Set enables a feature +func (es *Enablements) Set(e Enablement) { + if es.Has(e) { + panic("enablement " + e.String() + " set twice") + } + + *es |= e.Mask() +} |
