blaze-builder-0.2.0.0: Efficient construction of bytestrings.

Portabilitytested on GHC only
Stabilityexperimental
MaintainerSimon Meier <iridcode@gmail.com>

Blaze.ByteString.Builder.Word

Contents

Description

Writes and Builders for serializing words.

Note that for serializing a three tuple (x,y,z) of bytes (or other word values) you should use the expression

 fromWrite $ writeWord8 x `mappend` writeWord8 y `mappend` writeWord z

instead of

 fromWord8 x `mappend` fromWord8 y `mappend` fromWord z

The first expression will result in a single atomic write of three bytes, while the second expression will check for each byte, if there is free space left in the output buffer. Coalescing these checks can improve performance quite a bit, as long as you use it sensibly.

Synopsis

Writing words to a buffer

writeWord8 :: Word8 -> WriteSource

Write a single byte.

Big-endian writes

writeWord16be :: Word16 -> WriteSource

Write a Word16 in big endian format.

writeWord32be :: Word32 -> WriteSource

Write a Word32 in big endian format.

writeWord64be :: Word64 -> WriteSource

Write a Word64 in big endian format.

Little-endian writes

writeWord16le :: Word16 -> WriteSource

Write a Word16 in little endian format.

writeWord32le :: Word32 -> WriteSource

Write a Word32 in little endian format.

writeWord64le :: Word64 -> WriteSource

Write a Word64 in little endian format.

Host-endian writes

writeWordhost :: Word -> WriteSource

Write a single native machine Word. The Word is written in host order, host endian form, for the machine you're on. On a 64 bit machine the Word is an 8 byte value, on a 32 bit machine, 4 bytes. Values written this way are not portable to different endian or word sized machines, without conversion.

writeWord16host :: Word16 -> WriteSource

Write a Word16 in native host order and host endianness.

writeWord32host :: Word32 -> WriteSource

Write a Word32 in native host order and host endianness.

writeWord64host :: Word64 -> WriteSource

Write a Word64 in native host order and host endianness.

Creating builders from words

We provide serialization functions both for singleton words as well as for lists of words. Using these list serialization functions is much faster than using mconcat . map fromWord<n>, as the list serialization functions use a tighter inner loop and a chunked write like it is provided by functions such as fromWrite2List.

fromWord8 :: Word8 -> BuilderSource

Serialize a single byte.

fromWord8s :: [Word8] -> BuilderSource

Serialize a list of bytes.

Big-endian serialization

fromWord16be :: Word16 -> BuilderSource

Serialize a Word16 in big endian format.

fromWord32be :: Word32 -> BuilderSource

Serialize a Word32 in big endian format.

fromWord64be :: Word64 -> BuilderSource

Serialize a Word64 in big endian format.

fromWord32sbe :: [Word32] -> BuilderSource

Serialize a list of Word32s in big endian format.

fromWord16sbe :: [Word16] -> BuilderSource

Serialize a list of Word16s in big endian format.

fromWord64sbe :: [Word64] -> BuilderSource

Serialize a list of Word64s in big endian format.

Little-endian serialization

fromWord16le :: Word16 -> BuilderSource

Serialize a Word16 in little endian format.

fromWord32le :: Word32 -> BuilderSource

Serialize a Word32 in little endian format.

fromWord64le :: Word64 -> BuilderSource

Serialize a Word64 in little endian format.

fromWord16sle :: [Word16] -> BuilderSource

Serialize a list of Word16s in little endian format.

fromWord32sle :: [Word32] -> BuilderSource

Serialize a list of Word32s in little endian format.

fromWord64sle :: [Word64] -> BuilderSource

Serialize a list of Word64s in little endian format.

Host-endian serialization

fromWordhost :: Word -> BuilderSource

Serialize a single native machine Word. The Word is serialized in host order, host endian form, for the machine you're on. On a 64 bit machine the Word is an 8 byte value, on a 32 bit machine, 4 bytes. Values written this way are not portable to different endian or word sized machines, without conversion.

fromWord16host :: Word16 -> BuilderSource

Write a Word16 in native host order and host endianness.

fromWord32host :: Word32 -> BuilderSource

Write a Word32 in native host order and host endianness.

fromWord64host :: Word64 -> BuilderSource

Write a Word64 in native host order and host endianness.

fromWordshost :: [Word] -> BuilderSource

Serialize a list of Words. See fromWordhost for usage considerations.

fromWord16shost :: [Word16] -> BuilderSource

Write a list of Word16s in native host order and host endianness.

fromWord32shost :: [Word32] -> BuilderSource

Write a list of Word32s in native host order and host endianness.

fromWord64shost :: [Word64] -> BuilderSource

Write a list of Word64s in native host order and host endianness.