bytes-0.11: Sharing code for serialization between binary and cereal

Portabilitynon-portable
Stabilityexperimental
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellTrustworthy

Data.Bytes.Put

Description

This module generalizes the binary PutM and cereal PutM monads in an ad hoc fashion to permit code to be written that is compatible across them.

Moreover, this class permits code to be written to be portable over various monad transformers applied to these as base monads.

Synopsis

Documentation

class (Applicative m, Monad m) => MonadPut m whereSource

Methods

putWord8 :: Word8 -> m ()Source

Efficiently write a byte into the output buffer

putByteString :: ByteString -> m ()Source

An efficient primitive to write a strict ByteString into the output buffer.

In binary this flushes the current buffer, and writes the argument into a new chunk.

putLazyByteString :: ByteString -> m ()Source

Write a lazy ByteString efficiently.

With binary, this simply appends the chunks to the output buffer

flush :: m ()Source

Pop the ByteString we have constructed so far, if any, yielding a new chunk in the result ByteString.

If we're building a strict ByteString with cereal then this does nothing.

putWord16le :: Word16 -> m ()Source

Write a Word16 in little endian format

putWord16be :: Word16 -> m ()Source

Write a Word16 in big endian format

putWord16host :: Word16 -> m ()Source

O(1). Write a Word16 in native host order and host endianness. For portability issues see putWordhost.

putWord32le :: Word32 -> m ()Source

Write a Word32 in little endian format

putWord32be :: Word32 -> m ()Source

Write a Word32 in big endian format

putWord32host :: Word32 -> m ()Source

O(1). Write a Word32 in native host order and host endianness. For portability issues see putWordhost.

putWord64le :: Word64 -> m ()Source

Write a Word64 in little endian format

putWord64be :: Word64 -> m ()Source

Write a Word64 in big endian format

putWord64host :: Word64 -> m ()Source

O(1). Write a Word64 in native host order and host endianness. For portability issues see putWordhost.

putWordhost :: Word -> m ()Source

O(1). 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.

Instances

MonadPut PutM 
MonadPut PutM 
MonadPut m => MonadPut (ReaderT e m) 
MonadPut m => MonadPut (StateT s m) 
MonadPut m => MonadPut (StateT s m) 
(MonadPut m, Monoid w) => MonadPut (WriterT w m) 
(MonadPut m, Monoid w) => MonadPut (WriterT w m) 
(MonadPut m, Monoid w) => MonadPut (RWST r w s m) 
(MonadPut m, Monoid w) => MonadPut (RWST r w s m) 

runPutL :: Put -> ByteStringSource

Put a value into a lazy ByteString using runPut.

runPutS :: Put -> ByteStringSource

Put a value into a strict ByteString using runPut.