bytes-0.17.1: Sharing code for serialization between binary and cereal
Copyright(c) Edward Kmett 2013-2015
LicenseBSD3
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellSafe-Inferred
LanguageHaskell2010

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 where Source #

Minimal complete definition

Nothing

Methods

putWord8 :: Word8 -> m () Source #

Efficiently write a byte into the output buffer

default putWord8 :: (m ~ t n, MonadTrans t, MonadPut n) => Word8 -> m () Source #

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.

default putByteString :: (m ~ t n, MonadTrans t, MonadPut n) => ByteString -> m () Source #

putLazyByteString :: ByteString -> m () Source #

Write a lazy ByteString efficiently.

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

default putLazyByteString :: (m ~ t n, MonadTrans t, MonadPut n) => ByteString -> m () Source #

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.

default flush :: (m ~ t n, MonadTrans t, MonadPut n) => m () Source #

putWord16le :: Word16 -> m () Source #

Write a Word16 in little endian format

default putWord16le :: (m ~ t n, MonadTrans t, MonadPut n) => Word16 -> m () Source #

putWord16be :: Word16 -> m () Source #

Write a Word16 in big endian format

default putWord16be :: (m ~ t n, MonadTrans t, MonadPut n) => Word16 -> m () Source #

putWord16host :: Word16 -> m () Source #

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

default putWord16host :: (m ~ t n, MonadTrans t, MonadPut n) => Word16 -> m () Source #

putWord32le :: Word32 -> m () Source #

Write a Word32 in little endian format

default putWord32le :: (m ~ t n, MonadTrans t, MonadPut n) => Word32 -> m () Source #

putWord32be :: Word32 -> m () Source #

Write a Word32 in big endian format

default putWord32be :: (m ~ t n, MonadTrans t, MonadPut n) => Word32 -> m () Source #

putWord32host :: Word32 -> m () Source #

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

default putWord32host :: (m ~ t n, MonadTrans t, MonadPut n) => Word32 -> m () Source #

putWord64le :: Word64 -> m () Source #

Write a Word64 in little endian format

default putWord64le :: (m ~ t n, MonadTrans t, MonadPut n) => Word64 -> m () Source #

putWord64be :: Word64 -> m () Source #

Write a Word64 in big endian format

default putWord64be :: (m ~ t n, MonadTrans t, MonadPut n) => Word64 -> m () Source #

putWord64host :: Word64 -> m () Source #

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

default putWord64host :: (m ~ t n, MonadTrans t, MonadPut n) => Word64 -> m () Source #

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.

default putWordhost :: (m ~ t n, MonadTrans t, MonadPut n) => Word -> m () Source #

Instances

Instances details
MonadPut PutM Source # 
Instance details

Defined in Data.Bytes.Put

MonadPut PutM Source # 
Instance details

Defined in Data.Bytes.Put

MonadPut m => MonadPut (ExceptT e m) Source # 
Instance details

Defined in Data.Bytes.Put

MonadPut m => MonadPut (ReaderT e m) Source # 
Instance details

Defined in Data.Bytes.Put

MonadPut m => MonadPut (StateT s m) Source # 
Instance details

Defined in Data.Bytes.Put

MonadPut m => MonadPut (StateT s m) Source # 
Instance details

Defined in Data.Bytes.Put

(MonadPut m, Monoid w) => MonadPut (WriterT w m) Source # 
Instance details

Defined in Data.Bytes.Put

(MonadPut m, Monoid w) => MonadPut (WriterT w m) Source # 
Instance details

Defined in Data.Bytes.Put

(MonadPut m, Monoid w) => MonadPut (RWST r w s m) Source # 
Instance details

Defined in Data.Bytes.Put

Methods

putWord8 :: Word8 -> RWST r w s m () Source #

putByteString :: ByteString -> RWST r w s m () Source #

putLazyByteString :: ByteString -> RWST r w s m () Source #

flush :: RWST r w s m () Source #

putWord16le :: Word16 -> RWST r w s m () Source #

putWord16be :: Word16 -> RWST r w s m () Source #

putWord16host :: Word16 -> RWST r w s m () Source #

putWord32le :: Word32 -> RWST r w s m () Source #

putWord32be :: Word32 -> RWST r w s m () Source #

putWord32host :: Word32 -> RWST r w s m () Source #

putWord64le :: Word64 -> RWST r w s m () Source #

putWord64be :: Word64 -> RWST r w s m () Source #

putWord64host :: Word64 -> RWST r w s m () Source #

putWordhost :: Word -> RWST r w s m () Source #

(MonadPut m, Monoid w) => MonadPut (RWST r w s m) Source # 
Instance details

Defined in Data.Bytes.Put

Methods

putWord8 :: Word8 -> RWST r w s m () Source #

putByteString :: ByteString -> RWST r w s m () Source #

putLazyByteString :: ByteString -> RWST r w s m () Source #

flush :: RWST r w s m () Source #

putWord16le :: Word16 -> RWST r w s m () Source #

putWord16be :: Word16 -> RWST r w s m () Source #

putWord16host :: Word16 -> RWST r w s m () Source #

putWord32le :: Word32 -> RWST r w s m () Source #

putWord32be :: Word32 -> RWST r w s m () Source #

putWord32host :: Word32 -> RWST r w s m () Source #

putWord64le :: Word64 -> RWST r w s m () Source #

putWord64be :: Word64 -> RWST r w s m () Source #

putWord64host :: Word64 -> RWST r w s m () Source #

putWordhost :: Word -> RWST r w s m () Source #

runPutL :: Put -> ByteString Source #

Put a value into a lazy ByteString using runPut.

runPutS :: Put -> ByteString Source #

Put a value into a strict ByteString using runPut.