flat-0.4.4.0.0.0.0.2: Principled and efficient bit-oriented binary serialization.
Safe Haskell None
Language Haskell2010

Flat.Decoder.Prim

Description

Strict Decoder Primitives

Synopsis

Documentation

dWord8 :: Get Word8 Source #

Return the 8 most significant bits (same as dBE8)

dBE8 :: Get Word8 Source #

Return the 8 most significant bits

dBE16 :: Get Word16 Source #

Return the 16 most significant bits

dBE32 :: Get Word32 Source #

Return the 32 most significant bits

dBE64 :: Get Word64 Source #

Return the 64 most significant bits

dBEBits8 :: Int -> Get Word8 Source #

Return the n most significant bits (up to maximum of 8)

The bits are returned right shifted: >>> unflatWith (dBEBits8 3) [0b11100001::Word8] == Right 0b00000111 True

dBEBits16 :: Int -> Get Word16 Source #

Return the n most significant bits (up to maximum of 16) The bits are returned right shifted.

dBEBits32 :: Int -> Get Word32 Source #

Return the n most significant bits (up to maximum of 32) The bits are returned right shifted.

dBEBits64 :: Int -> Get Word64 Source #

Return the n most significant bits (up to maximum of 64) The bits are returned right shifted.

dropBits :: Int -> Get () Source #

Drop the specified number of bits

getChunksInfo :: Get ( Ptr Word8 , [ Int ]) Source #

Decode an Array (a list of chunks up to 255 bytes long) returning the pointer to the first data byte and a list of chunk sizes

dByteArray_ :: Get ( ByteArray , Int ) Source #

Decode a ByteArray and its length

data ConsState Source #

A special state, optimised for constructor decoding.

It consists of:

  • The bits to parse, the top bit being the first to parse (could use a Word16 instead, no difference in performance)
  • The number of decoded bits

Supports up to 512 constructors (9 bits).

Constructors

ConsState ! Word ! Int

consOpen :: Get ConsState Source #

Switch to constructor decoding {-# INLINE consOpen #-}

consClose :: Int -> Get () Source #

Switch back to normal decoding {-# NOINLINE consClose #-}

consBits :: ConsState -> Int -> ( ConsState , Word ) Source #

Decode from 1 to 3 bits

It could read more bits that are available, but it doesn't matter, errors will be checked in consClose.