pub enum ConditionExpr {
Ref(u32),
And(Vec<ConditionExpr>),
Or(Vec<ConditionExpr>),
Xor(Box<ConditionExpr>, Box<ConditionExpr>),
Not(Box<ConditionExpr>),
Package {
id: u32,
min: u32,
max: u32,
},
}Expand description
A parsed AHB condition expression tree.
Represents boolean combinations of condition references like [1] ∧ [2] or
([3] ∨ [4]) ⊻ [5].
§Examples
A single condition reference:
use ahb_types::ConditionExpr;
let expr = ConditionExpr::Ref(931);
assert_eq!(expr.condition_ids(), [931].into());Variants§
Ref(u32)
A leaf reference to a single condition by number, e.g., [931].
And(Vec<ConditionExpr>)
Boolean AND of one or more expressions. All must be true.
Invariant: exprs.len() >= 2.
Or(Vec<ConditionExpr>)
Boolean OR of one or more expressions. At least one must be true.
Invariant: exprs.len() >= 2.
Xor(Box<ConditionExpr>, Box<ConditionExpr>)
Boolean XOR of exactly two expressions. Exactly one must be true.
Not(Box<ConditionExpr>)
Boolean NOT of an expression.
Package
Package cardinality constraint: [NP_min..max]
Implementations§
Source§impl ConditionExpr
impl ConditionExpr
Sourcepub fn condition_ids(&self) -> BTreeSet<u32>
pub fn condition_ids(&self) -> BTreeSet<u32>
Extracts all condition IDs referenced in this expression tree.
Trait Implementations§
Source§impl Clone for ConditionExpr
impl Clone for ConditionExpr
Source§impl Debug for ConditionExpr
impl Debug for ConditionExpr
Source§impl<'de> Deserialize<'de> for ConditionExpr
impl<'de> Deserialize<'de> for ConditionExpr
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Display for ConditionExpr
impl Display for ConditionExpr
impl Eq for ConditionExpr
Source§impl PartialEq for ConditionExpr
impl PartialEq for ConditionExpr
Source§impl Serialize for ConditionExpr
impl Serialize for ConditionExpr
impl StructuralPartialEq for ConditionExpr
Auto Trait Implementations§
impl Freeze for ConditionExpr
impl RefUnwindSafe for ConditionExpr
impl Send for ConditionExpr
impl Sync for ConditionExpr
impl Unpin for ConditionExpr
impl UnsafeUnpin for ConditionExpr
impl UnwindSafe for ConditionExpr
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