go_goutils/types/bitmasks.go

45 lines
689 B
Go

package types
type BitMask interface {
HasFlag(bit MaskBit) bool
AddFlag(bit MaskBit)
ClearFlag(bit MaskBit)
ToggleFlag(bit MaskBit)
}
// BitMasks
type MaskBit uint8
// LDAP Connection flags
const (
LdapBindUndefined MaskBit = 1 << iota
LdapBindNone // GSSAPI via SASL or (TODO) Anonymous bind
LdapBindNet
LdapBindTls
LdapBindStartTls
LdapBindSasl
LdapBindNoPassword
)
func (f MaskBit) HasFlag(flag MaskBit) (r bool) {
if f&flag != 0 {
r = true
}
return
}
func (f *MaskBit) AddFlag(flag MaskBit) {
*f |= flag
return
}
func (f *MaskBit) ClearFlag(flag MaskBit) {
*f &= flag
return
}
func (f *MaskBit) ToggleFlag(flag MaskBit) {
*f ^= flag
return
}