-- |Encoder Types module Flat.Encoder.Types( Size, NumBits, Prim, S(..) ) where import Flat.Types import GHC.Ptr (Ptr (..)) -- |Calculate the size (in bits) of the encoding of a value type Size a = a -> NumBits -> NumBits -- |Strict encoder state data S = S { nextPtr :: {-# UNPACK #-} !(Ptr Word8) , currByte :: {-# UNPACK #-} !Word8 , usedBits :: {-# UNPACK #-} !NumBits } deriving Show -- |A basic encoder type Prim = S -> IO S