Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Synopsis
- type Getter a = Parser E a
- class Get a where
- runGet :: Get a => ByteString -> Either E (a, ByteString)
- runGetter :: Getter a -> ByteString -> Either E (a, ByteString)
- data E
- data EBase
- data EGeneric e
- = EGenericSum (EGenericSum e)
- | EGenericField String (Maybe String) Natural e
- data EGenericSum e
- eBase :: EBase -> Getter a
- getEBase :: Getter a -> EBase -> Getter a
- getPrim :: forall a. Prim' a => Getter a
- getGenericNonSum :: forall a. (Generic a, GTraverseNonSum Get (Rep a), GAssertNotVoid a, GAssertNotSum a) => Getter a
- getGenericSum :: forall pt a. (Generic a, GTraverseSum Get 'SumOnly (Rep a), Get pt, GAssertNotVoid a, GAssertSum a) => PfxTagCfg pt -> Getter a
Documentation
Instances
(TypeError ENoEmpty :: Constraint) => Get Void Source # | |
Get Int8 Source # | 8-bit (1-byte) words do not require byte order in order to precisely define their representation. |
Get Word8 Source # | 8-bit (1-byte) words do not require byte order in order to precisely define their representation. |
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. |
Defined in Binrep.Get get :: Getter ByteString Source # | |
Get () Source # | Unit type parses nothing. |
Defined in Binrep.Get | |
Get a => Get (Identity a) Source # | |
Prim' a => Get (ViaPrim a) Source # | |
Get a => Get (NullTerminated a) Source # | We may parse any null-terminated data using a special flatparse combinator. |
Defined in Binrep.Type.NullTerminated get :: Getter (NullTerminated a) Source # | |
Get (Thin ByteString) Source # | |
Defined in Binrep.Type.Thin | |
Get a => Get [a] Source # | Parse elements until EOF. Sometimes used at the "top" of binary formats. |
Defined in Binrep.Get | |
(TypeError ENoSum :: Constraint) => Get (Either a b) Source # | |
(bs ~ MagicBytes a, ReifyBytesW64 bs, KnownNat (Length bs)) => Get (Magic a) Source # | |
(Get a, KnownNat n) => Get (NullPadded n a) Source # | |
Defined in Binrep.Type.NullPadded get :: Getter (NullPadded n a) Source # | |
(Prefix pfx, GetSize a, Get pfx) => Get (SizePrefixed pfx a) Source # | |
Defined in Binrep.Type.Prefix.Size get :: Getter (SizePrefixed pfx a) Source # | |
(Get a, KnownNat n) => Get (Sized n a) Source # | |
(Prim' a, ByteSwap a) => Get (ByteOrdered 'BigEndian a) Source # | |
Defined in Binrep.Get | |
(Prim' a, ByteSwap a) => Get (ByteOrdered 'LittleEndian a) Source # | |
Defined in Binrep.Get get :: Getter (ByteOrdered 'LittleEndian a) Source # | |
Get (ByteOrdered end Int8) Source # | Byte order is irrelevant for 8-bit (1-byte) words. |
Defined in Binrep.Get | |
Get (ByteOrdered end Word8) Source # | Byte order is irrelevant for 8-bit (1-byte) words. |
Defined in Binrep.Get | |
(Get l, Get r) => Get (l, r) Source # | Parse tuples left-to-right. |
Defined in Binrep.Get | |
GenericTraverse Get Source # | |
Defined in Binrep.Get type GenericTraverseF Get :: Type -> Type # type GenericTraverseC Get a # genericTraverseAction :: GenericTraverseC Get a => String -> String -> Maybe String -> Natural -> GenericTraverseF Get a # | |
GenericTraverseSum Get Source # | |
Defined in Binrep.Get genericTraverseSumPfxTagAction :: GenericTraverseC Get pt => String -> GenericTraverseF Get pt # genericTraverseSumNoMatchingCstrAction :: String -> [String] -> Text -> GenericTraverseF Get a # | |
(Prefix pfx, GetCount f, Get pfx, Get a) => Get (CountPrefixed pfx f a) Source # | |
Defined in Binrep.Type.Prefix.Count get :: Getter (CountPrefixed pfx f a) Source # | |
type GenericTraverseF Get Source # | |
Defined in Binrep.Get | |
type GenericTraverseC Get a Source # | |
Defined in Binrep.Get |
runGet :: Get a => ByteString -> Either E (a, ByteString) Source #
runGetter :: Getter a -> ByteString -> Either E (a, ByteString) Source #
Structured parse error.
E Int EMiddle | |
EFail | Unhandled parse error. You get this if you don't change a flatparse fail to an error. Should not be set except by library code. |
EExpectedByte Word8 Word8 | expected first, got second |
EOverlong Int Int | expected first, got second |
EExpected ByteString ByteString | expected first, got second |
EFailNamed String | known fail |
EFailParse String ByteString Word8 | parse fail (where you parse a larger object, then a smaller one in it) |
ERanOut Int | ran out of input, needed precisely Actually a |
Instances
A generic context layer for a parse error of type e
.
Recursive: parse errors occurring in fields are wrapped up here. (Those errors may also have a generic context layer.)
Making this explicitly recursive may seem strange, but it clarifies that this data type is to be seen as a layer over a top-level type.
EGenericSum (EGenericSum e) | Parse error relating to sum types (constructors). |
EGenericField | Parse error in a constructor field. |
Instances
Generic (EGeneric e) Source # | |
Show e => Show (EGeneric e) Source # | |
Eq e => Eq (EGeneric e) Source # | |
type Rep (EGeneric e) Source # | |
Defined in Binrep.Get type Rep (EGeneric e) = D1 ('MetaData "EGeneric" "Binrep.Get" "binrep-0.6.0-inplace" 'False) (C1 ('MetaCons "EGenericSum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (EGenericSum e))) :+: C1 ('MetaCons "EGenericField" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 e)))) |
data EGenericSum e Source #
EGenericSumTag e | Parse error parsing prefix tag. |
EGenericSumTagNoMatch | Unable to match a constructor to the parsed prefix tag. |
Instances
getGenericNonSum :: forall a. (Generic a, GTraverseNonSum Get (Rep a), GAssertNotVoid a, GAssertNotSum a) => Getter a Source #
getGenericSum :: forall pt a. (Generic a, GTraverseSum Get 'SumOnly (Rep a), Get pt, GAssertNotVoid a, GAssertSum a) => PfxTagCfg pt -> Getter a Source #