pub struct ConditionExprEvaluator<'a, E: ConditionEvaluator> { /* private fields */ }Expand description
Evaluates a ConditionExpr AST against an evaluation context.
Uses three-valued short-circuit logic:
- AND: False short-circuits to False; all True -> True; else Unknown
- OR: True short-circuits to True; all False -> False; else Unknown
- XOR: requires both operands known; Unknown if either is Unknown
- NOT: inverts True/False; preserves Unknown
Implementations§
Source§impl<'a, E: ConditionEvaluator> ConditionExprEvaluator<'a, E>
impl<'a, E: ConditionEvaluator> ConditionExprEvaluator<'a, E>
Sourcepub fn new(evaluator: &'a E) -> Self
pub fn new(evaluator: &'a E) -> Self
Create a new expression evaluator wrapping a condition evaluator.
Sourcepub fn evaluate(
&self,
expr: &ConditionExpr,
ctx: &EvaluationContext<'_>,
) -> ConditionResult
pub fn evaluate( &self, expr: &ConditionExpr, ctx: &EvaluationContext<'_>, ) -> ConditionResult
Evaluate a condition expression tree.
Sourcepub fn evaluate_status(
&self,
ahb_status: &str,
ctx: &EvaluationContext<'_>,
) -> ConditionResult
pub fn evaluate_status( &self, ahb_status: &str, ctx: &EvaluationContext<'_>, ) -> ConditionResult
Parse an AHB status string, evaluate it, and return the result.
Returns ConditionResult::True if there are no conditions (unconditionally required).
Sourcepub fn evaluate_status_with_ub(
&self,
ahb_status: &str,
ctx: &EvaluationContext<'_>,
ub_definitions: &HashMap<String, ConditionExpr>,
) -> ConditionResult
pub fn evaluate_status_with_ub( &self, ahb_status: &str, ctx: &EvaluationContext<'_>, ub_definitions: &HashMap<String, ConditionExpr>, ) -> ConditionResult
Like evaluate_status, but expands UB condition
references inline during parsing.
Sourcepub fn evaluate_status_detailed(
&self,
ahb_status: &str,
ctx: &EvaluationContext<'_>,
) -> (ConditionResult, Vec<u32>)
pub fn evaluate_status_detailed( &self, ahb_status: &str, ctx: &EvaluationContext<'_>, ) -> (ConditionResult, Vec<u32>)
Like evaluate_status, but also returns the
IDs of conditions that evaluated to Unknown.
Sourcepub fn evaluate_status_detailed_with_ub(
&self,
ahb_status: &str,
ctx: &EvaluationContext<'_>,
ub_definitions: &HashMap<String, ConditionExpr>,
) -> (ConditionResult, Vec<u32>)
pub fn evaluate_status_detailed_with_ub( &self, ahb_status: &str, ctx: &EvaluationContext<'_>, ub_definitions: &HashMap<String, ConditionExpr>, ) -> (ConditionResult, Vec<u32>)
Like evaluate_status_detailed, but
expands UB condition references inline during parsing.
Auto Trait Implementations§
impl<'a, E> Freeze for ConditionExprEvaluator<'a, E>
impl<'a, E> RefUnwindSafe for ConditionExprEvaluator<'a, E>where
E: RefUnwindSafe,
impl<'a, E> Send for ConditionExprEvaluator<'a, E>
impl<'a, E> Sync for ConditionExprEvaluator<'a, E>
impl<'a, E> Unpin for ConditionExprEvaluator<'a, E>
impl<'a, E> UnsafeUnpin for ConditionExprEvaluator<'a, E>
impl<'a, E> UnwindSafe for ConditionExprEvaluator<'a, E>where
E: RefUnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more