smt_scope/parsers/z3/
inter_line.rs

1#[cfg(feature = "mem_dbg")]
2use mem_dbg::{MemDbg, MemSize};
3
4#[cfg_attr(feature = "mem_dbg", derive(MemSize, MemDbg))]
5#[cfg_attr(feature = "mem_dbg", copy_type)]
6#[derive(Debug, Default, Clone, Copy)]
7pub(super) struct InterLine {
8    prev: Data,
9    curr: Data,
10}
11
12impl InterLine {
13    pub fn newline(&mut self) {
14        self.prev = self.curr;
15        self.curr = Default::default();
16    }
17    pub fn prev(&self) -> Data {
18        self.prev
19    }
20    pub fn curr(&mut self) -> &mut Data {
21        &mut self.curr
22    }
23}
24
25#[cfg_attr(feature = "mem_dbg", derive(MemSize, MemDbg))]
26#[cfg_attr(feature = "mem_dbg", copy_type)]
27#[derive(Debug, Default, Clone, Copy)]
28pub(super) struct Data {
29    pub(super) last_line_kind: LineKind,
30}
31
32#[cfg_attr(feature = "mem_dbg", derive(MemSize, MemDbg))]
33#[cfg_attr(feature = "mem_dbg", copy_type)]
34#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
35pub(super) enum LineKind {
36    DecideAndOr,
37    Conflict,
38    Push,
39    #[default]
40    Other,
41}