use crate::types::{ActionDefinition, DerivedPredicate, DurativeActionDefinition};
#[derive(Debug, Clone, PartialEq)]
pub enum StructureDef {
Action(ActionDefinition),
DurativeAction(DurativeActionDefinition),
Derived(DerivedPredicate),
}
impl StructureDef {
pub const fn new_action(action: ActionDefinition) -> Self {
Self::Action(action)
}
pub const fn new_durative_action(action: DurativeActionDefinition) -> Self {
Self::DurativeAction(action)
}
pub const fn new_derived(predicate: DerivedPredicate) -> Self {
Self::Derived(predicate)
}
}
impl From<ActionDefinition> for StructureDef {
fn from(value: ActionDefinition) -> Self {
StructureDef::new_action(value)
}
}
impl From<DurativeActionDefinition> for StructureDef {
fn from(value: DurativeActionDefinition) -> Self {
StructureDef::new_durative_action(value)
}
}
impl From<DerivedPredicate> for StructureDef {
fn from(value: DerivedPredicate) -> Self {
StructureDef::new_derived(value)
}
}