use std::borrow::Borrow;
use crate::structures::literal::{self, abLiteral};
pub struct Level {
decision: abLiteral,
consequences: Vec<(literal::Source, abLiteral)>,
}
impl Level {
pub fn new(decision: abLiteral) -> Self {
Self {
decision,
consequences: vec![],
}
}
pub fn decision(&self) -> abLiteral {
self.decision
}
pub fn consequences(&self) -> &[(literal::Source, abLiteral)] {
&self.consequences
}
pub fn record_consequence(&mut self, literal: impl Borrow<abLiteral>, source: literal::Source) {
self.consequences.push((source, *literal.borrow()))
}
}