1use crate::{Lbool, Lit, Var, VarMap};
2
3#[derive(Default)]
4pub struct VarAssign {
5 v: VarMap<Lbool>,
6}
7
8impl VarAssign {
9 #[inline]
10 pub fn reserve(&mut self, var: Var) {
11 self.v.reserve(var)
12 }
13
14 #[inline]
15 pub fn v(&self, lit: Lit) -> Lbool {
16 Lbool(self.v[lit].0 ^ (!lit.polarity() as u8))
17 }
18
19 #[inline]
20 pub fn set(&mut self, lit: Lit) {
21 self.v[lit] = Lbool(lit.polarity() as u8)
22 }
23
24 #[inline]
25 pub fn set_none(&mut self, var: Var) {
26 self.v[var] = Lbool::NONE
27 }
28}