bytezap-1.3.0: Bytestring builder with zero intermediate allocation
Safe HaskellSafe-Inferred
LanguageGHC2021

Bytezap.Parser.Struct.TypeLits.Bytes

Description

Efficient type-level bytestring parsing.

One may implement this using the type-level serializing, but mirroring it for parsing does less work and allocation.

Synopsis

Documentation

class ParseReifyBytesW64 (ns :: [Natural]) where Source #

Instances

Instances details
ParseReifyBytesW32 ns => ParseReifyBytesW64 ns Source #

Try to group Word32s next.

Instance details

Defined in Bytezap.Parser.Struct.TypeLits.Bytes

Methods

parseReifyBytesW64 :: forall (st :: ZeroBitType) e. ParserT st e () Source #

(ReifyW8 n1, ReifyW8 n2, ReifyW8 n3, ReifyW8 n4, ReifyW8 n5, ReifyW8 n6, ReifyW8 n7, ReifyW8 n8, ParseReifyBytesW64 ns) => ParseReifyBytesW64 (n1 ': (n2 ': (n3 ': (n4 ': (n5 ': (n6 ': (n7 ': (n8 ': ns)))))))) Source #

Enough bytes to make a Word64.

Instance details

Defined in Bytezap.Parser.Struct.TypeLits.Bytes

Methods

parseReifyBytesW64 :: forall (st :: ZeroBitType) e. ParserT st e () Source #

class ParseReifyBytesW32 (ns :: [Natural]) where Source #

Serialize a type-level bytestring, largest grouping Word32.

Instances

Instances details
ParseReifyBytesW16 ns => ParseReifyBytesW32 ns Source #

Try to group Word16s next.

Instance details

Defined in Bytezap.Parser.Struct.TypeLits.Bytes

Methods

parseReifyBytesW32 :: forall (st :: ZeroBitType) e. ParserT st e () Source #

(ReifyW8 n1, ReifyW8 n2, ReifyW8 n3, ReifyW8 n4, ParseReifyBytesW32 ns) => ParseReifyBytesW32 (n1 ': (n2 ': (n3 ': (n4 ': ns)))) Source #

Enough bytes to make a Word32.

Instance details

Defined in Bytezap.Parser.Struct.TypeLits.Bytes

Methods

parseReifyBytesW32 :: forall (st :: ZeroBitType) e. ParserT st e () Source #

class ParseReifyBytesW16 (ns :: [Natural]) where Source #

Serialize a type-level bytestring, largest grouping Word16.

Instances

Instances details
ParseReifyBytesW8 ns => ParseReifyBytesW16 ns Source #

Reify byte-by-byte next.

Instance details

Defined in Bytezap.Parser.Struct.TypeLits.Bytes

Methods

parseReifyBytesW16 :: forall (st :: ZeroBitType) e. ParserT st e () Source #

(ReifyW8 n1, ReifyW8 n2, ParseReifyBytesW16 ns) => ParseReifyBytesW16 (n1 ': (n2 ': ns)) Source #

Enough bytes to make a Word16.

Instance details

Defined in Bytezap.Parser.Struct.TypeLits.Bytes

Methods

parseReifyBytesW16 :: forall (st :: ZeroBitType) e. ParserT st e () Source #

class ParseReifyBytesW8 (ns :: [Natural]) where Source #

Serialize a type-level bytestring, byte-by-byte.

Methods

parseReifyBytesW8 :: ParserT st e () Source #

Instances

Instances details
ParseReifyBytesW8 ('[] :: [Natural]) Source #

End of the line.

Instance details

Defined in Bytezap.Parser.Struct.TypeLits.Bytes

Methods

parseReifyBytesW8 :: forall (st :: ZeroBitType) e. ParserT st e () Source #

(ReifyW8 n1, ParseReifyBytesW8 ns) => ParseReifyBytesW8 (n1 ': ns) Source #

Reify the next byte.

Instance details

Defined in Bytezap.Parser.Struct.TypeLits.Bytes

Methods

parseReifyBytesW8 :: forall (st :: ZeroBitType) e. ParserT st e () Source #