use crate::{
config::Config,
db::{
atom::AtomDB, clause::ClauseDB, consequence_q::ConsequenceQ, dbStatus, literal::LiteralDB,
},
dispatch::{
library::report::{self},
Dispatch,
},
};
use std::rc::Rc;
use super::Counters;
pub struct GenericContext<R: rand::Rng + std::default::Default> {
pub config: Config,
pub counters: Counters,
pub clause_db: ClauseDB,
pub literal_db: LiteralDB,
pub atom_db: AtomDB,
pub consequence_q: ConsequenceQ,
pub status: dbStatus,
pub rng: R,
pub dispatcher: Option<Rc<dyn Fn(Dispatch)>>,
}
impl<R: rand::Rng + std::default::Default> GenericContext<R> {
pub fn report(&self) -> report::Solve {
match self.status {
dbStatus::Consistent => report::Solve::Satisfiable,
dbStatus::Inconsistent => report::Solve::Unsatisfiable,
_ => report::Solve::Unknown,
}
}
}