Module ctf::parse

source · []
Expand description

Contains the parser for memtrace’s CTF dump format.

The parser is designed in such a way that there are no runtime checks related to big-/low-endian encoding. The main building block is RawParser, which features parsing primitives for a wide range of types. In particular, integers and floats have a big-endian version and a low-endian one.

The actual parser type is Parser, which takes a type parameter Endian corresponding to the endian specification. It can be either LowEndian or BigEndian. Both these types are not meant to be constructed in practice, they are just type-level information encoding the endian specification to use. So, in practice, Parser<LowEndian> directly parses all integers/floats as assuming a low-endian convention, and similarily for Parser<BigEndian>.

Deciding which endian convention to use happens when parsing the memtrace CTF magic number. This is done by creating a RawParser, and calling the try_magic method. Note that when parsing a CTF file, the magic number is the first thing parsed.

This gives either a Parser<LowEndian> or a Parser<BigEndian (or an error). Once parsing starts with either of these types, a change in endian convention is considered an error.

Structs

Type representing big-endian parsing.

Top-level parser.

Parsing context.

Type representing low-endian parsing.

Packet parser.

A parser, parameterized by an endian specification (big or low).

A position in the parser (zero-cost wrapper around a usize).

Raw parser.

Traits

Trait implemented by the big-endian parser and the low-endian parser.

Type Definitions

Big-endian CTF parser.

Big-endian packet parser.

Big-endian parser.

Low-endian CTF parser.

Low-endian packet parser.

Low-endian parser.