use crate::{
actions::{
ConstructionActions, DecisionActions, ReasoningContext,
boolean::BoolInspectionActions,
integer::{IntInspectionActions, IntPropCond},
},
solver::{DefaultView, View, branchers::BoxedBrancher, queue::PriorityLevel},
};
pub trait BoolInitActions<Context>: BoolInspectionActions<Context> {
fn advise_when_fixed(&self, ctx: &mut Context, data: u64);
fn enqueue_when_fixed(&self, ctx: &mut Context);
}
pub trait BrancherInitActions: ConstructionActions + DecisionActions {
fn ensure_decidable<T: DefaultView>(&mut self, view: impl Into<View<T>>);
fn push_brancher(&mut self, brancher: BoxedBrancher);
}
pub trait InitActions {
fn advise_on_backtrack(&mut self);
fn enqueue_now(&mut self, enqueue: bool);
fn set_priority(&mut self, priority: PriorityLevel);
}
pub trait IntInitActions<Context>: IntInspectionActions<Context>
where
Context: ReasoningContext + ?Sized,
{
fn advise_when(&self, ctx: &mut Context, condition: IntPropCond, data: u64);
fn enqueue_when(&self, ctx: &mut Context, condition: IntPropCond);
}