Expand description

This crate exists because of limitations with proc-macro crates. We need to be able to test errors returned from the code generation function while also being able to test the macros themselves. This might also be reused by people who have new storage types.

Structs

This is a special purpose structure that can efficiently handle forwards and backwards lookups and maintains the set property. A is associated data that is not hashed or used in equality comparisons.

For concatenation widths

Note: the type must be unambiguous for the construction functions

Prefixes used for codegen names and functions. Most of these should be prefixed with two underscores and the crate name to prevent collisions.

Usize and/or String Bound. If s.is_empty(), then there is no arbitrary string in the bound and the base value is 0. x is added on to the value.

Enums

Bitwidth as described by a single value or one value minus another

Constants

Default names for awint

Traits

For results that have the same Ok and Err types

Functions

Input parsing and code generation function for corresponding concatenations of components macros.

Lowering of the parsed structs into Rust code.

Wrap s in ANSI delimiters for terminal colors. {90..=97} => {grey, red, green, yellow, blue, purple, cyan, white}

Tries parsing as hexadecimal, octal, binary, and decimal

Tries to parse raw input as a range. Looks for the existence of top level “..” or “..=” punctuation. If allow_single_bit_range is set, will return a single bit range if “..” or “..=” does not exist.

In ranges we commonly see stuff like (x + y) or (x - y) with one of them being a constant we can parse, which passes upward the Usb and Usbr chain to get calculated into a static width.

Looks for the existence of a top level “[]” delimited group and uses the last one as a bit range.

Parses input TokenStream into “raw” concatenations of components in Vec<char> strings

Returns architecture-independent Rust code that returns an InlAwi preset with the value of bits.

Returns architecture-independent Rust code that returns an InlAwi type with bitwidth bw.