veripb_formula/
boolean_var.rs1use crate::{prelude::Negate, var_type::VarType};
4
5#[derive(Debug, Clone, Default)]
7pub struct BooleanVar {
8 value: BoolValue,
9}
10
11#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
13pub enum BoolValue {
14 Unassigned,
15 Assigned(bool),
16}
17
18impl VarType for BooleanVar {
19 type Value = BoolValue;
20
21 #[inline]
22 fn new() -> Self
23 where
24 Self: Sized,
25 {
26 BooleanVar {
27 value: BoolValue::Unassigned,
28 }
29 }
30
31 #[inline]
32 fn set_value(&mut self, value: Self::Value) {
33 self.value = value;
34 }
35
36 #[inline]
37 fn get_value(&self) -> Self::Value {
38 self.value
39 }
40}
41
42impl Negate for BoolValue {
43 #[inline]
44 fn negate(self) -> Self {
45 match self {
46 Self::Unassigned => Self::Unassigned,
47 Self::Assigned(value) => Self::Assigned(!value),
48 }
49 }
50}
51
52impl Default for BoolValue {
53 #[inline]
54 fn default() -> Self {
55 Self::Unassigned
56 }
57}