macro_rules! options {
($struct_name:ident, $stat:ident, $optmod:ident, $prefix:expr, $outputname:expr,
$($( #[$attr:meta] )* $opt:ident : $t:ty = (
$init:expr,
$parse:ident,
[$dep_tracking_marker:ident],
$desc:expr)
),* ,) => { ... };
}
Expand description
Defines all CodegenOptions
/DebuggingOptions
fields and parsers all at once. The goal of this
macro is to define an interface that can be programmatically used by the option parser
to initialize the struct without hardcoding field names all over the place.
The goal is to invoke this macro once with the correct fields, and then this macro generates all
necessary code. The main gotcha of this macro is the cgsetters
module which is a bunch of
generated code to parse an option into its respective field in the struct. There are a few
hand-written parsers for parsing specific types of values in this module.