use crate::delegate::node::GenericNode;
use crate::manager::config::AbstractProcessConfiguration;
use crate::queued_steps::step::GenericStep;
pub trait AbstractProcessHandler<Conf : AbstractProcessConfiguration> {
fn process_new_step(context : &Conf::Context,
param : &Conf::Parameterization,
parent_node : &GenericNode<Conf::NodeKind>,
step_to_process : &GenericStep<Conf::StepKind>,
new_node_id : u32,
node_counter : u32) -> Conf::NodeKind;
fn get_criterion(context : &Conf::Context,
param : &Conf::Parameterization,
parent_node : &GenericNode<Conf::NodeKind>,
step_to_process : &GenericStep<Conf::StepKind>,
new_node_id : u32,
node_counter : u32) -> Conf::FilterCriterion;
fn collect_next_steps(context : &Conf::Context,
param : &Conf::Parameterization,
parent_node_id : u32,
parent_node_kind : &Conf::NodeKind) -> (u32,Vec<GenericStep<Conf::StepKind>>);
fn get_local_verdict_when_no_child(context : &Conf::Context,
param : &Conf::Parameterization,
node_kind : &Conf::NodeKind) -> Conf::LocalVerdict;
fn get_local_verdict_from_static_analysis(context : &Conf::Context,
param : &Conf::Parameterization,
node_kind : &Conf::NodeKind) -> Conf::LocalVerdict;
fn pursue_process_after_static_verdict(context : &Conf::Context,
param : &Conf::Parameterization,
loc_verd : &Conf::LocalVerdict) -> bool;
}