binary-ext-2.0.1: An alternate with strong-typed errors for `Data.Binary.Get` monad from `binary` package.

Safe HaskellNone
LanguageHaskell2010

Data.Conduit.Parsers.Binary.Put

Description

Despite binary's Put is fully-functional construction (unlike Get), we decided to provide this module for symmetry with Get.

Synopsis

Documentation

type PutM s i o m a = PutS s (ConduitT i o m) a Source #

A ConduitT with wrappers supposed to a binary or text serialization.

type Put = forall s i m. (DefaultEncodingState s, Monad m) => PutM s i ByteString m () Source #

The shortening of PutM for the most common use case of binary serialization.

runPut :: PutM ByteOffset i o m () -> ConduitT i o m () Source #

Run an encoder presented as a Put monad. Returns Producer.

bytesWrote :: EncodingBytesWrote s => PutM s i o m Word64 Source #

Get the total number of bytes wrote to this point. Can be used with mfix to result bytes count prediction:

putWithSize :: (DefaultEncodingState s, Monad m) => PutM s i S.ByteString m () -> PutM s i S.ByteString m ()
putWithSize !p = void $ mfix $ \size -> do
  putWord64le size
  before <- bytesWrote
  p
  after <- bytesWrote
  return $ after - before

castPut :: (EncodingState s, Monad m) => EncodingToken s -> Put -> PutM s i ByteString m () Source #

Run the given Put encoder from binary package producing the given bytes count and convert result into a Put.

putWord8 :: (EncodingState s, Num (EncodingToken s), Monad m) => Word8 -> PutM s i ByteString m () Source #

Write a byte.

putInt8 :: (EncodingState s, Num (EncodingToken s), Monad m) => Int8 -> PutM s i ByteString m () Source #

Write a signed byte.

putWord16be :: (EncodingState s, Num (EncodingToken s), Monad m) => Word16 -> PutM s i ByteString m () Source #

Write a Word16 in big endian format.

putWord32be :: (EncodingState s, Num (EncodingToken s), Monad m) => Word32 -> PutM s i ByteString m () Source #

Write a Word32 in big endian format.

putWord64be :: (EncodingState s, Num (EncodingToken s), Monad m) => Word64 -> PutM s i ByteString m () Source #

Write a Word64 in big endian format.

putInt16be :: (EncodingState s, Num (EncodingToken s), Monad m) => Int16 -> PutM s i ByteString m () Source #

Write an Int16 in big endian format.

putInt32be :: (EncodingState s, Num (EncodingToken s), Monad m) => Int32 -> PutM s i ByteString m () Source #

Write an Int32 in big endian format.

putInt64be :: (EncodingState s, Num (EncodingToken s), Monad m) => Int64 -> PutM s i ByteString m () Source #

Write an Int64 in big endian format.

putFloatbe :: (EncodingState s, Num (EncodingToken s), Monad m) => Float -> PutM s i ByteString m () Source #

Write a Float in big endian IEEE-754 format.

putDoublebe :: (EncodingState s, Num (EncodingToken s), Monad m) => Double -> PutM s i ByteString m () Source #

Write a Double in big endian IEEE-754 format.

putWord16le :: (EncodingState s, Num (EncodingToken s), Monad m) => Word16 -> PutM s i ByteString m () Source #

Write a Word16 in little endian format.

putWord32le :: (EncodingState s, Num (EncodingToken s), Monad m) => Word32 -> PutM s i ByteString m () Source #

Write a Word32 in little endian format.

putWord64le :: (EncodingState s, Num (EncodingToken s), Monad m) => Word64 -> PutM s i ByteString m () Source #

Write a Word64 in little endian format.

putInt16le :: (EncodingState s, Num (EncodingToken s), Monad m) => Int16 -> PutM s i ByteString m () Source #

Write an Int16 in little endian format.

putInt32le :: (EncodingState s, Num (EncodingToken s), Monad m) => Int32 -> PutM s i ByteString m () Source #

Write an Int32 in little endian format.

putInt64le :: (EncodingState s, Num (EncodingToken s), Monad m) => Int64 -> PutM s i ByteString m () Source #

Write an Int64 in little endian format.

putFloatle :: (EncodingState s, Num (EncodingToken s), Monad m) => Float -> PutM s i ByteString m () Source #

Write a Float in little endian IEEE-754 format.

putDoublele :: (EncodingState s, Num (EncodingToken s), Monad m) => Double -> PutM s i ByteString m () Source #

Write a Double in little endian IEEE-754 format.

putWordhost :: (EncodingState s, Num (EncodingToken s), Monad m) => Word -> PutM s i ByteString m () Source #

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.

putWord16host :: (EncodingState s, Num (EncodingToken s), Monad m) => Word16 -> PutM s i ByteString m () Source #

Write a Word16 in native host order and host endianness. For portability issues see putWordhost.

putWord32host :: (EncodingState s, Num (EncodingToken s), Monad m) => Word32 -> PutM s i ByteString m () Source #

Write a Word32 in native host order and host endianness. For portability issues see putWordhost.

putWord64host :: (EncodingState s, Num (EncodingToken s), Monad m) => Word64 -> PutM s i ByteString m () Source #

Write a Word64 in native host order On a 32 bit machine we write two host order Word32s, in big endian form. For portability issues see putWordhost.

putInthost :: (EncodingState s, Num (EncodingToken s), Monad m) => Int -> PutM s i ByteString m () Source #

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 Int 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.

putInt16host :: (EncodingState s, Num (EncodingToken s), Monad m) => Int16 -> PutM s i ByteString m () Source #

Write an Int16 in native host order and host endianness. For portability issues see putInthost.

putInt32host :: (EncodingState s, Num (EncodingToken s), Monad m) => Int32 -> PutM s i ByteString m () Source #

Write an Int32 in native host order and host endianness. For portability issues see putInthost.

putInt64host :: (EncodingState s, Num (EncodingToken s), Monad m) => Int64 -> PutM s i ByteString m () Source #

Write an Int64 in native host order On a 32 bit machine we write two host order Int32s, in big endian form. For portability issues see putInthost.

putFloathost :: (EncodingState s, Num (EncodingToken s), Monad m) => Float -> PutM s i ByteString m () Source #

Write a Float in native in IEEE-754 format and host endian.

putDoublehost :: (EncodingState s, Num (EncodingToken s), Monad m) => Double -> PutM s i ByteString m () Source #

Write a Double in native in IEEE-754 format and host endian.