haskus-binary-1.4: Haskus binary format manipulation

Safe HaskellNone
LanguageHaskell2010

Haskus.Format.Binary.Serialize.Buffer

Description

Serializer into a mutable buffer

>>> let w = do putWord8 0x01 ; putWord32BE 0x23456789
>>> b <- newBuffer 10
>>> void $ runBufferPut b 0 w
>>> xs <- forM [0..4] (bufferReadWord8IO b)
>>> xs == [0x01,0x23,0x45,0x67,0x89]
True
Synopsis

Documentation

newtype BufferPutT b m a Source #

A Put monad than fails when there is not enough space in the target buffer

Constructors

BufferPutT (StateT (BufferPutState b) m a) 
Instances
MonadTrans (BufferPutT b) Source # 
Instance details

Defined in Haskus.Format.Binary.Serialize.Buffer

Methods

lift :: Monad m => m a -> BufferPutT b m a #

Monad m => Monad (BufferPutT b m) Source # 
Instance details

Defined in Haskus.Format.Binary.Serialize.Buffer

Methods

(>>=) :: BufferPutT b m a -> (a -> BufferPutT b m b0) -> BufferPutT b m b0 #

(>>) :: BufferPutT b m a -> BufferPutT b m b0 -> BufferPutT b m b0 #

return :: a -> BufferPutT b m a #

fail :: String -> BufferPutT b m a #

Functor m => Functor (BufferPutT b m) Source # 
Instance details

Defined in Haskus.Format.Binary.Serialize.Buffer

Methods

fmap :: (a -> b0) -> BufferPutT b m a -> BufferPutT b m b0 #

(<$) :: a -> BufferPutT b m b0 -> BufferPutT b m a #

MonadFix m => MonadFix (BufferPutT b m) Source # 
Instance details

Defined in Haskus.Format.Binary.Serialize.Buffer

Methods

mfix :: (a -> BufferPutT b m a) -> BufferPutT b m a #

MonadFail m => MonadFail (BufferPutT b m) Source # 
Instance details

Defined in Haskus.Format.Binary.Serialize.Buffer

Methods

fail :: String -> BufferPutT b m a #

Monad m => Applicative (BufferPutT b m) Source # 
Instance details

Defined in Haskus.Format.Binary.Serialize.Buffer

Methods

pure :: a -> BufferPutT b m a #

(<*>) :: BufferPutT b m (a -> b0) -> BufferPutT b m a -> BufferPutT b m b0 #

liftA2 :: (a -> b0 -> c) -> BufferPutT b m a -> BufferPutT b m b0 -> BufferPutT b m c #

(*>) :: BufferPutT b m a -> BufferPutT b m b0 -> BufferPutT b m b0 #

(<*) :: BufferPutT b m a -> BufferPutT b m b0 -> BufferPutT b m a #

MonadIO m => MonadIO (BufferPutT b m) Source # 
Instance details

Defined in Haskus.Format.Binary.Serialize.Buffer

Methods

liftIO :: IO a -> BufferPutT b m a #

(MonadIO m, MonadFail m) => PutMonad (BufferPutT (Buffer Mutable pin gc heap) m) Source # 
Instance details

Defined in Haskus.Format.Binary.Serialize.Buffer

Methods

putWord8 :: Word8 -> BufferPutT (Buffer Mutable pin gc heap) m () Source #

putWord16 :: Word16 -> BufferPutT (Buffer Mutable pin gc heap) m () Source #

putWord32 :: Word32 -> BufferPutT (Buffer Mutable pin gc heap) m () Source #

putWord64 :: Word64 -> BufferPutT (Buffer Mutable pin gc heap) m () Source #

putWord8s :: [Word8] -> BufferPutT (Buffer Mutable pin gc heap) m () Source #

putWord16s :: [Word16] -> BufferPutT (Buffer Mutable pin gc heap) m () Source #

putWord32s :: [Word32] -> BufferPutT (Buffer Mutable pin gc heap) m () Source #

putWord64s :: [Word64] -> BufferPutT (Buffer Mutable pin gc heap) m () Source #

putBuffer :: Buffer mut pin0 gc0 heap0 -> BufferPutT (Buffer Mutable pin gc heap) m () Source #

preAllocateAtLeast :: Word -> BufferPutT (Buffer Mutable pin gc heap) m () Source #

getPutOffset :: Monad m => BufferPutT b m Word Source #

Get current offset

getPutBuffer :: Monad m => BufferPutT b m b Source #

Get buffer

setPutOffset :: Monad m => Word -> BufferPutT b m () Source #

Get current offset

runBufferPut :: Monad m => b -> Word -> BufferPutT b m a -> m (a, Word) Source #

Run a buffer put