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 }