#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum BddError {
NodeLimitReached,
TimoutReached,
}
pub trait BddHandler {
fn new_ref_added(&mut self) -> Option<BddError> {
None
}
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct NopBddHandler {}
impl BddHandler for NopBddHandler {}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct NumberOfNodesBddHandler {
bound: usize,
count: usize,
}
impl NumberOfNodesBddHandler {
pub const fn new(bound: usize) -> Self {
Self { bound, count: 0 }
}
}
impl BddHandler for NumberOfNodesBddHandler {
fn new_ref_added(&mut self) -> Option<BddError> {
self.count += 1;
if self.count >= self.bound {
Some(BddError::NodeLimitReached)
} else {
None
}
}
}