|Portability||tested on GHC only|
|Maintainer||Simon Meier <firstname.lastname@example.org>|
A general and efficient write type that allows for the easy construction of builders for (smallish) bounded size writes to a buffer.
- data Write
- data WriteIO
- writeN :: Int -> (Ptr Word8 -> IO ()) -> WriteIO
- exactWrite :: Int -> (Ptr Word8 -> IO ()) -> Write
- boundedWrite :: Int -> WriteIO -> Write
- runWrite :: Write -> WriteIO
- runWriteIO :: WriteIO -> Ptr Word8 -> IO (Ptr Word8)
- fromWrite :: Write -> Builder
- fromWriteSingleton :: (a -> Write) -> a -> Builder
- fromWriteList :: (a -> Write) -> [a] -> Builder
- writeStorable :: Storable a => a -> Write
- fromStorable :: Storable a => a -> Builder
- fromStorables :: Storable a => [a] -> Builder
Abstracting writes to a buffer
writeN size io creates a write that denotes the writing of
to a buffer using the IO action
io. Note that
io MUST write EXACTLY
bytes to the buffer!
exactWrite size io creates a bounded write that can later be converted to
a builder that writes exactly
size bytes. Note that
io MUST write
size bytes to the buffer!
boundedWrite size write creates a bounded write from a
write that does
not write more than
Constructing builders from writes
Builder writing a list of data one element at a time.
A builder that serializes a storable value. No alignment is done.