streamly-core-0.2.0: Streaming, parsers, arrays and more
Copyright(c) 2020 Composewell Technologies
LicenseBSD-3-Clause
Maintainerstreamly@composewell.com
PortabilityGHC
Safe HaskellSafe-Inferred
LanguageHaskell2010

Streamly.Internal.Data.Binary.Parser

Description

Decode Haskell data types from byte streams.

It would be inefficient to use this to compose parsers for general algebraic data types. For general deserialization of ADTs please use the Serialize type class instances. The fastest way to deserialize byte streams representing Haskell data types is to write them to arrays and deserialize the array using the Serialize type class.

Synopsis

Type class

class FromBytes a where Source #

Methods

fromBytes :: Parser Word8 m a Source #

Decode a byte stream to a Haskell type.

Decoders

unit :: Monad m => Parser Word8 m () Source #

A value of type () is encoded as 0 in binary encoding.

0 ==> ()

Pre-release

bool :: Monad m => Parser Word8 m Bool Source #

A value of type Bool is encoded as follows in binary encoding.

0 ==> False
1 ==> True

Pre-release

ordering :: Monad m => Parser Word8 m Ordering Source #

A value of type Ordering is encoded as follows in binary encoding.

0 ==> LT
1 ==> EQ
2 ==> GT

Pre-release

eqWord8 :: Monad m => Word8 -> Parser Word8 m Word8 Source #

Accept the input byte only if it is equal to the specified value.

Pre-release

word8 :: Monad m => Parser Word8 m Word8 Source #

Accept any byte.

Pre-release

word16be :: Monad m => Parser Word8 m Word16 Source #

Parse two bytes as a Word16, the first byte is the MSB of the Word16 and second byte is the LSB (big endian representation).

Pre-release

word16le :: Monad m => Parser Word8 m Word16 Source #

Parse two bytes as a Word16, the first byte is the LSB of the Word16 and second byte is the MSB (little endian representation).

Pre-release

word32be :: Monad m => Parser Word8 m Word32 Source #

Parse four bytes as a Word32, the first byte is the MSB of the Word32 and last byte is the LSB (big endian representation).

Pre-release

word32le :: Monad m => Parser Word8 m Word32 Source #

Parse four bytes as a Word32, the first byte is the MSB of the Word32 and last byte is the LSB (big endian representation).

Pre-release

word64be :: Monad m => Parser Word8 m Word64 Source #

Parse eight bytes as a Word64, the first byte is the MSB of the Word64 and last byte is the LSB (big endian representation).

Pre-release

word64le :: Monad m => Parser Word8 m Word64 Source #

Parse eight bytes as a Word64, the first byte is the MSB of the Word64 and last byte is the LSB (big endian representation).

Pre-release

word64host :: MonadIO m => Parser Word8 m Word64 Source #

Parse eight bytes as a Word64 in the host byte order.

Pre-release

int16be :: Monad m => Parser Word8 m Int16 Source #

Parse two bytes as a Int16, the first byte is the MSB of the Int16 and second byte is the LSB (big endian representation).

Pre-release

int16le :: Monad m => Parser Word8 m Int16 Source #

Parse two bytes as a Int16, the first byte is the LSB of the Int16 and second byte is the MSB (little endian representation).

Pre-release

int32be :: Monad m => Parser Word8 m Int32 Source #

Parse four bytes as a Int32, the first byte is the MSB of the Int32 and last byte is the LSB (big endian representation).

Pre-release

int32le :: Monad m => Parser Word8 m Int32 Source #

Parse four bytes as a Int32, the first byte is the MSB of the Int32 and last byte is the LSB (big endian representation).

Pre-release

int64be :: Monad m => Parser Word8 m Int64 Source #

Parse eight bytes as a Int64, the first byte is the MSB of the Int64 and last byte is the LSB (big endian representation).

Pre-release

int64le :: Monad m => Parser Word8 m Int64 Source #

Parse eight bytes as a Int64, the first byte is the MSB of the Int64 and last byte is the LSB (big endian representation).

Pre-release

charLatin1 :: Monad m => Parser Word8 m Char Source #

Accept any byte.

Pre-release