Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data DescriptorM m s a
- type Descriptor s a = DescriptorM IdentityT s a
- serialize :: s -> Descriptor s a -> ByteString
- deserialize :: ByteString -> Descriptor s s -> Either String s
- deserializeEx :: ByteString -> Descriptor s s -> s
- unwrapGet :: (MonadTrans m, forall x. Monad x => Monad (m x)) => DescriptorM m s a -> m Get a
- unwrapPut :: (MonadTrans m, forall x. Monad x => Monad (m x)) => s -> DescriptorM m s a -> m PutM a
- morphRef :: (MonadTrans m, forall x. Monad x => Monad (m x)) => (s -> t) -> DescriptorM m t a -> DescriptorM m s a
- morphTransformer :: (MonadTrans t, MonadTrans u, forall n. Monad n => (Monad (t n), Monad (u n))) => (forall m x. Monad m => t m x -> u m x) -> DescriptorM t s a -> DescriptorM u s a
- isolate :: (MonadTransControl m, forall x. Monad x => Monad (m x)) => Int -> DescriptorM m s a -> DescriptorM m s a
- conditionally :: (MonadTransControl m, forall x. Monad x => Monad (m x)) => (s -> Maybe a) -> (a -> Bool) -> DescriptorM m a a -> DescriptorM m s (Maybe a)
- cursor :: (MonadTrans m, forall x. Monad (m x)) => DescriptorM m s Int
Documentation
data DescriptorM m s a Source #
Descriptor s a
is a monad that describes the binary structure for a structure s
while deserializing value a
.
Instances
type Descriptor s a = DescriptorM IdentityT s a Source #
Execution
serialize :: s -> Descriptor s a -> ByteString Source #
Convenience function for runPut . unwrapPut s
deserialize :: ByteString -> Descriptor s s -> Either String s Source #
Convenience function for flip runGet bs . unwrapGet
deserializeEx :: ByteString -> Descriptor s s -> s Source #
Like deserialize
, but throw a ParserException
upon failure rather than an Either
.
Conversion to cereal
monads
unwrapGet :: (MonadTrans m, forall x. Monad x => Monad (m x)) => DescriptorM m s a -> m Get a Source #
unwrapGet desc
takes a DescriptorM
and returns only the internal Get
monad.
unwrapPut :: (MonadTrans m, forall x. Monad x => Monad (m x)) => s -> DescriptorM m s a -> m PutM a Source #
unwrapPut s desc
takes the structure being described and a DescriptorM
for it, and returns the internal PutM
monad.
Utilities
morphRef :: (MonadTrans m, forall x. Monad x => Monad (m x)) => (s -> t) -> DescriptorM m t a -> DescriptorM m s a Source #
Shifts the reference point of the described structure using the provided morphism. Identical to lmap
.
morphTransformer :: (MonadTrans t, MonadTrans u, forall n. Monad n => (Monad (t n), Monad (u n))) => (forall m x. Monad m => t m x -> u m x) -> DescriptorM t s a -> DescriptorM u s a Source #
Morphs the underlying monad transformer
isolate :: (MonadTransControl m, forall x. Monad x => Monad (m x)) => Int -> DescriptorM m s a -> DescriptorM m s a Source #
Wrapper around isolate
from Data.Serialize.Get
conditionally :: (MonadTransControl m, forall x. Monad x => Monad (m x)) => (s -> Maybe a) -> (a -> Bool) -> DescriptorM m a a -> DescriptorM m s (Maybe a) Source #
Similar to lookAhead from Data.Serialize.Get; puts only if the field is Just
cursor :: (MonadTrans m, forall x. Monad (m x)) => DescriptorM m s Int Source #
The cursor position, i.e. how many bytes have been written/parsed so far.