Wrapper that makes any Enum type Storable.
In foreign function interfaces you will often want to use enumeration types but defining Storable
instances is cumbersome. This package provides the type Enum.Storable.T w e
, where e.g. Enum.Storable.T Word8 Ordering
means that values of type Ordering
are stored in a Word8
. The Storable
methods store the numeric values of the enumeration elements as obtained by fromEnum
. E.g. EQ
is stored as 1
. The type itself stores a Haskell enumeration element, such that GHC can apply all of its optimizations for enumerations. It is not checked, whether the storage type w
is large enough to hold all admissible numeric values of e
. It is also not checked, whether the storage type w
supports negative values whenever the enumeration of e
contains ones.
See the bool8
package for the special case of a Bool
stored in a Word8
.