Safe Haskell | Safe |
---|---|

Language | Haskell98 |

Similar to Data.Edison.Coll.EnumSet but it allows to choose the underlying type for bit storage. This is really a low-level module for type-safe foreign function interfaces.

The integer representation of the enumeration type is the bit position of the flag within the bitvector.

## Synopsis

- newtype T word index = Cons {
- decons :: word

- fromEnum :: (Enum a, Bits w) => a -> T w a
- fromEnums :: (Enum a, Bits w) => [a] -> T w a
- toEnums :: (Enum a, Bits w) => T w a -> [a]
- intToEnums :: (Enum a, Integral w) => T w a -> [a]
- mostSignificantPosition :: (Bits w, Storable w) => T w a -> Int
- singletonByPosition :: Bits w => Int -> T w a
- null :: (Enum a, Bits w) => T w a -> Bool
- empty :: (Enum a, Bits w) => T w a
- singleton :: (Enum a, Bits w) => a -> T w a
- disjoint :: (Enum a, Bits w) => T w a -> T w a -> Bool
- subset :: (Enum a, Bits w) => T w a -> T w a -> Bool
- (.&.) :: (Enum a, Bits w) => T w a -> T w a -> T w a
- (.-.) :: (Enum a, Bits w) => T w a -> T w a -> T w a
- (.|.) :: (Enum a, Bits w) => T w a -> T w a -> T w a
- xor :: (Enum a, Bits w) => T w a -> T w a -> T w a
- unions :: (Enum a, Bits w) => [T w a] -> T w a
- get :: (Enum a, Bits w) => a -> T w a -> Bool
- put :: (Enum a, Bits w) => a -> Bool -> T w a -> T w a
- accessor :: (Enum a, Bits w) => a -> T (T w a) Bool
- set :: (Enum a, Bits w) => a -> T w a -> T w a
- clear :: (Enum a, Bits w) => a -> T w a -> T w a
- flip :: (Enum a, Bits w) => a -> T w a -> T w a
- fromBool :: (Enum a, Bits w) => a -> Bool -> T w a

# Documentation

## Instances

Eq word => Eq (T word index) Source # | |

(Enum a, Bits w) => Semigroup (T w a) Source # | |

(Enum a, Bits w) => Monoid (T w a) Source # | Since this data type is intended for constructing flags,
we choose the set union as |

(Enum a, Storable w) => Storable (T w a) Source # | |

mostSignificantPosition :: (Bits w, Storable w) => T w a -> Int Source #

floor of binary logarithm -
Intended for getting the position of a single set bit.
This in turn is intended for implementing an `Enum`

instance
if you only know masks but no bit positions.

singletonByPosition :: Bits w => Int -> T w a Source #

set a bit -
Intended for implementing an `Enum`

instance
if you only know masks but no bit positions.

subset :: (Enum a, Bits w) => T w a -> T w a -> Bool Source #

`subset a b`

is `True`

if `a`

is a subset of `b`

.