binrep-0.8.0: Encode precise binary representations directly in types
Safe HaskellSafe-Inferred
LanguageGHC2021

Binrep.Get

Synopsis

Documentation

class Get a where Source #

Methods

get :: Getter a Source #

Parse from binary.

Instances

Instances details
(TypeError ENoEmpty :: Constraint) => Get Void Source # 
Instance details

Defined in Binrep.Get

Methods

get :: Getter Void Source #

Get Int8 Source #

8-bit (1-byte) words do not require byte order in order to precisely define their representation.

Instance details

Defined in Binrep.Get

Methods

get :: Getter Int8 Source #

Get Word8 Source #

8-bit (1-byte) words do not require byte order in order to precisely define their representation.

Instance details

Defined in Binrep.Get

Methods

get :: Getter Word8 Source #

Get ByteString Source #

Return the rest of the input.

A plain unannotated bytestring isn't very useful -- you'll usually want to null-terminate or length-prefix it.

Note that this _does_ perform work: we make a new bytestring so we don't rely on the input bytestring. To use the input bytestring directly, see Binrep.Type.Thin.

Instance details

Defined in Binrep.Get

Get () Source #

Unit type parses nothing.

Instance details

Defined in Binrep.Get

Methods

get :: Getter () Source #

Get a => Get (Identity a) Source # 
Instance details

Defined in Binrep.Get

Methods

get :: Getter (Identity a) Source #

(Generic a, GTraverseNonSum Get (Rep a), GAssertNotVoid a, GAssertNotSum a) => Get (GenericallyNonSum a) Source # 
Instance details

Defined in Binrep.Get

Prim' a => Get (ViaPrim a) Source # 
Instance details

Defined in Binrep.Get

Methods

get :: Getter (ViaPrim a) Source #

(GetC a, KnownNat (CBLen a)) => Get (ViaGetC a) Source # 
Instance details

Defined in Binrep.Get

Methods

get :: Getter (ViaGetC a) Source #

Get a => Get (NullTerminated a) Source #

We may parse any null-terminated data using a special flatparse combinator.

Instance details

Defined in Binrep.Type.NullTerminated

Get (Thin ByteString) Source # 
Instance details

Defined in Binrep.Type.Thin

Get a => Get [a] Source #

Parse elements until EOF. Sometimes used at the "top" of binary formats.

Instance details

Defined in Binrep.Get

Methods

get :: Getter [a] Source #

(TypeError ENoSum :: Constraint) => Get (Either a b) Source # 
Instance details

Defined in Binrep.Get

Methods

get :: Getter (Either a b) Source #

(bs ~ MagicBytes a, ParseReifyBytesW64 bs, ReifyBytesW64 bs, KnownNat (Length bs)) => Get (Magic a) Source # 
Instance details

Defined in Binrep.Type.Magic

Methods

get :: Getter (Magic a) Source #

(Get a, KnownNat n) => Get (NullPadded n a) Source # 
Instance details

Defined in Binrep.Type.NullPadded

Methods

get :: Getter (NullPadded n a) Source #

(Prefix pfx, GetSize a, Get pfx) => Get (SizePrefixed pfx a) Source # 
Instance details

Defined in Binrep.Type.Prefix.Size

Methods

get :: Getter (SizePrefixed pfx a) Source #

(Get a, KnownNat n) => Get (Sized n a) Source # 
Instance details

Defined in Binrep.Type.Sized

Methods

get :: Getter (Sized n a) Source #

(Prim' a, ByteSwap a) => Get (ByteOrdered 'BigEndian a) Source # 
Instance details

Defined in Binrep.Get

(Prim' a, ByteSwap a) => Get (ByteOrdered 'LittleEndian a) Source # 
Instance details

Defined in Binrep.Get

Get (ByteOrdered end Int8) Source #

Byte order is irrelevant for 8-bit (1-byte) words.

Instance details

Defined in Binrep.Get

Methods

get :: Getter (ByteOrdered end Int8) Source #

Get (ByteOrdered end Word8) Source #

Byte order is irrelevant for 8-bit (1-byte) words.

Instance details

Defined in Binrep.Get

(Get l, Get r) => Get (l, r) Source #

Parse tuples left-to-right.

Instance details

Defined in Binrep.Get

Methods

get :: Getter (l, r) Source #

GenericTraverse Get Source # 
Instance details

Defined in Binrep.Get

Associated Types

type GenericTraverseF Get :: Type -> Type #

type GenericTraverseC Get a #

GenericTraverseSum Get Source # 
Instance details

Defined in Binrep.Get

Get (Refined pr (Refined pl a)) => Get (Refined (And pl pr) a) Source # 
Instance details

Defined in Binrep.Get

Methods

get :: Getter (Refined (And pl pr) a) Source #

(Prefix pfx, GetCount f, Get pfx, Get a) => Get (CountPrefixed pfx f a) Source # 
Instance details

Defined in Binrep.Type.Prefix.Count

Methods

get :: Getter (CountPrefixed pfx f a) Source #

type GenericTraverseF Get Source # 
Instance details

Defined in Binrep.Get

type GenericTraverseC Get a Source # 
Instance details

Defined in Binrep.Get

type Getter a = Parser E a Source #

newtype ViaGetC a Source #

Constructors

ViaGetC 

Fields

Instances

Instances details
(GetC a, KnownNat (CBLen a)) => Get (ViaGetC a) Source # 
Instance details

Defined in Binrep.Get

Methods

get :: Getter (ViaGetC a) Source #

getWrapGeneric :: Get a => String -> (E -> EGeneric E) -> Getter a Source #

Parse. On parse error, coat it in a generic context layer.

bzToFp :: forall a e st. KnownNat (CBLen a) => ParserT st e a -> ParserT st e a Source #

Convert a bytezap struct parser to a flatparse parser.

fpToBz :: ParserT st e a -> Int# -> (a -> Int# -> ParserT st e r) -> ParserT st e r Source #

getPrim :: forall a. Prim' a => Getter a Source #

Parse any Prim'.