package boolset import ( "database/sql/driver" "encoding/base64" "errors" "golang.org/x/exp/constraints" ) var ( ErrValueNotSupported = errors.New("value not supported") ) type BooleanSet []byte // FromString convert from base64 encoded boolset. func FromString(data string) (*BooleanSet, error) { raw, err := base64.StdEncoding.DecodeString(data) if err != nil { return nil, err } b := BooleanSet(raw) return &b, nil } func (b *BooleanSet) UnmarshalBinary(data []byte) error { *b = make(BooleanSet, len(data)) copy(*b, data) return nil } func (b *BooleanSet) MarshalBinary() (data []byte, err error) { return *b, nil } func (b *BooleanSet) String() (data string, err error) { raw, err := b.MarshalBinary() if err != nil { return "", err } return base64.StdEncoding.EncodeToString(raw), nil } func (b *BooleanSet) Enabled(flag int) bool { if flag >= len(*b)*8 { return false } return (*b)[flag/8]&(1<