macro_rules! register_decision_variant {
(
$inner:ty,
$name:literal,
$complexity:literal,
$aliases:expr,
$description:literal,
dims: [$($dim:expr),* $(,)?],
fields: [$($field:expr),* $(,)?],
size_getters: [$(($sg_name:literal, $sg_method:ident)),* $(,)?]
) => { ... };
(@display_name "DecisionMinimumVertexCover") => { ... };
(@display_name "DecisionMinimumDominatingSet") => { ... };
(@display_name "DecisionMaximumIndependentSet") => { ... };
(@display_name $name:literal) => { ... };
}Expand description
Register the boilerplate inventory entries for a concrete Decision<P> variant.
The size_getters parameter defines problem-specific size fields as
(name, getter_on_inner) pairs, e.g., [("num_vertices", num_vertices), ("num_edges", num_edges)].
These are used for overhead expressions and ProblemSize extraction.
The macro automatically adds a ("k", k) entry for source_size_fn on the Decision side.
Callers must define inherent methods on Decision<Inner> (delegating to self.inner())
and a k() method (from self.bound()) before invoking this macro.