Skip to main content

register_decision_variant

Macro register_decision_variant 

Source
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.