use std::collections::HashSet;
use cell::Cell;
use config::BufferConfig;
use crate::{context::callbacks::CallbackOnPremises, db::ClauseKey, structures::literal::CLiteral};
#[doc(hidden)]
mod cell;
pub mod config;
#[doc(hidden)]
pub mod methods;
pub enum ResolutionOk {
UIP,
UnitClause,
Repeat(ClauseKey, CLiteral),
}
pub struct ResolutionBuffer {
valueless_count: usize,
clause_length: usize,
asserts: Option<CLiteral>,
premises: HashSet<ClauseKey>,
buffer: Vec<Cell>,
config: BufferConfig,
callback_premises: Option<Box<CallbackOnPremises>>,
}
impl ResolutionBuffer {
pub fn set_callback_resolution_premises(&mut self, callback: Box<CallbackOnPremises>) {
self.callback_premises = Some(callback);
}
pub fn make_callback_resolution_premises(&mut self, premises: &HashSet<ClauseKey>) {
if let Some(callback) = &mut self.callback_premises {
callback(premises);
}
}
}