blaze-builder- Efficient buffered output.

Portabilitytested on GHC only
MaintainerSimon Meier <>




A general and efficient write type that allows for the easy construction of builders for (smallish) bounded size writes to a buffer.


Abstracting writes to a buffer

data Write Source

A write of a bounded number of bytes.


data WriteIO Source

A write to a buffer.

FIXME: Find better name: what about Poke ?


writeN :: Int -> (Ptr Word8 -> IO ()) -> WriteIOSource

writeN size io creates a write that denotes the writing of size bytes to a buffer using the IO action io. Note that io MUST write EXACTLY size bytes to the buffer!

exactWrite :: Int -> (Ptr Word8 -> IO ()) -> WriteSource

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 EXACTLY size bytes to the buffer!

boundedWrite :: Int -> WriteIO -> WriteSource

boundedWrite size write creates a bounded write from a write that does not write more than size bytes.

runWrite :: Write -> WriteIOSource

Extract the WriteIO action of a write.

Constructing builders from writes

fromWriteList :: (a -> Write) -> [a] -> BuilderSource

Construct a Builder writing a list of data one element at a time.

Writing Storables

writeStorable :: Storable a => a -> WriteSource

Write a storable value.

fromStorable :: Storable a => a -> BuilderSource

A builder that serializes a storable value. No alignment is done.

fromStorables :: Storable a => [a] -> BuilderSource

A builder that serializes a list of storable values by writing them consecutively. No alignment is done. Parsing information needs to be provided externally.