binary-strict-0.4.5: Binary deserialisation using strict ByteStringsSource codeContentsIndex
Data.Binary.Strict.Get
Portabilityportable to Hugs and GHC.
Stabilityexperimental
MaintainerAdam Langley <agl@imperialviolet.org>
Contents
The Get type
Parsing
Utility
Parsing particular types
ByteStrings
Big-endian reads
Little-endian reads
Host-endian, unaligned reads
Floating point
Description

This is a strict version of the Get monad from the binary package. It's pretty much just a copy and paste job from the original source code. The binary team are currently unsure about their future plans w.r.t. strictness, so this is a stop gap measure.

To use, write a function in the Get monad:

 import Data.Binary.Strict.Get as BinStrict
 import Data.ByteString as BS
 parse :: BinStrict.Get
 parse = getWord16be
 main = print $ runGet parse $ BS.pack [1, 1]

This results in a tuple of (Right 257, "") (where the second element is just the remaining data after the parser has run)

Synopsis
data Get a
runGet :: Get a -> ByteString -> (Either String a, ByteString)
lookAhead :: Get a -> Get a
lookAheadM :: Get (Maybe a) -> Get (Maybe a)
lookAheadE :: Get (Either a b) -> Get (Either a b)
zero :: Get a
plus :: Get a -> Get a -> Get a
spanOf :: (Word8 -> Bool) -> Get ByteString
skip :: Int -> Get ()
bytesRead :: Get Int
remaining :: Get Int
isEmpty :: Get Bool
getWord8 :: Get Word8
getByteString :: Int -> Get ByteString
getWord16be :: Get Word16
getWord32be :: Get Word32
getWord64be :: Get Word64
getWord16le :: Get Word16
getWord32le :: Get Word32
getWord64le :: Get Word64
getWordhost :: Get Word
getWord16host :: Get Word16
getWord32host :: Get Word32
getWord64host :: Get Word64
getFloat32host :: Get Float
getFloat64host :: Get Double
The Get type
data Get a Source
show/hide Instances
runGet :: Get a -> ByteString -> (Either String a, ByteString)Source
Run a parser on the given input and return the result (either an error string from a call to fail, or the parsing result) and the remainder of of the input.
Parsing
lookAhead :: Get a -> Get aSource
Run ga, but return without consuming its input. Fails if ga fails.
lookAheadM :: Get (Maybe a) -> Get (Maybe a)Source
Like lookAhead, but consume the input if gma returns 'Just _'. Fails if gma fails.
lookAheadE :: Get (Either a b) -> Get (Either a b)Source
Like lookAhead, but consume the input if gea returns 'Right _'. Fails if gea fails.
zero :: Get aSource
plus :: Get a -> Get a -> Get aSource
spanOf :: (Word8 -> Bool) -> Get ByteStringSource
Utility
skip :: Int -> Get ()Source
Skip ahead n bytes. Fails if fewer than n bytes are available.
bytesRead :: Get IntSource
Get the total number of bytes read to this point.
remaining :: Get IntSource
Get the number of remaining unparsed bytes. Useful for checking whether all input has been consumed.
isEmpty :: Get BoolSource
Test whether all input has been consumed, i.e. there are no remaining unparsed bytes.
Parsing particular types
getWord8 :: Get Word8Source
ByteStrings
getByteString :: Int -> Get ByteStringSource
An efficient get method for strict ByteStrings. Fails if fewer than n bytes are left in the input.
Big-endian reads
getWord16be :: Get Word16Source
getWord32be :: Get Word32Source
getWord64be :: Get Word64Source
Little-endian reads
getWord16le :: Get Word16Source
getWord32le :: Get Word32Source
getWord64le :: Get Word64Source
Host-endian, unaligned reads
getWordhost :: Get WordSource
getWord16host :: Get Word16Source
getWord32host :: Get Word32Source
getWord64host :: Get Word64Source
Floating point
getFloat32host :: Get FloatSource
getFloat64host :: Get DoubleSource
Produced by Haddock version 2.4.2