47 lines
932 B
Go
47 lines
932 B
Go
|
package bitmask
|
||
|
|
||
|
// MaskBit is a flag container.
|
||
|
type MaskBit uint8
|
||
|
|
||
|
/*
|
||
|
NewMaskBit is a convenience function.
|
||
|
It will return a MaskBit with a (referenced) value of 0, so set your consts up accordingly.
|
||
|
It is highly recommended to set this default as a "None" flag (separate from your iotas!)
|
||
|
as shown in the example.
|
||
|
*/
|
||
|
func NewMaskBit() (m *MaskBit) {
|
||
|
|
||
|
m = new(MaskBit)
|
||
|
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// HasFlag is true if m has MaskBit flag set/enabled.
|
||
|
func (m *MaskBit) HasFlag(flag MaskBit) (r bool) {
|
||
|
|
||
|
var b MaskBit = *m
|
||
|
|
||
|
if b&flag != 0 {
|
||
|
r = true
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// AddFlag adds MaskBit flag to m.
|
||
|
func (m *MaskBit) AddFlag(flag MaskBit) {
|
||
|
*m |= flag
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// ClearFlag removes MaskBit flag from m.
|
||
|
func (m *MaskBit) ClearFlag(flag MaskBit) {
|
||
|
*m &= flag
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// ToggleFlag switches MaskBit flag in m to its inverse; if true, it is now false and vice versa.
|
||
|
func (m *MaskBit) ToggleFlag(flag MaskBit) {
|
||
|
*m ^= flag
|
||
|
return
|
||
|
}
|