Safe Haskell | None |
---|---|
Language | Haskell2010 |
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
- newtype BufferPutT b m a = BufferPutT (StateT (BufferPutState b) m a)
- type BufferPut b a = BufferPutT b Identity a
- getPutOffset :: Monad m => BufferPutT b m Word
- getPutBuffer :: Monad m => BufferPutT b m b
- setPutOffset :: Monad m => Word -> BufferPutT b m ()
- runBufferPut :: Monad m => b -> Word -> BufferPutT b m a -> m (a, Word)
Documentation
newtype BufferPutT b m a Source #
A Put monad than fails when there is not enough space in the target buffer
BufferPutT (StateT (BufferPutState b) m a) |
Instances
type BufferPut b a = BufferPutT b Identity a 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