//! Valued Intermediate Representation use serde::{Deserialize, Serialize}; use crate::types::{EuclidValue, Metadata}; #[derive(Debug, Clone, Serialize, Deserialize)] pub enum ValuedComparisonLogic { NegativeConjunction, PositiveDisjunction, } #[derive(Clone, Debug, Serialize, Deserialize)] pub struct ValuedComparison { pub values: Vec, pub logic: ValuedComparisonLogic, pub metadata: Metadata, } pub type ValuedIfCondition = Vec; #[derive(Clone, Debug, Serialize, Deserialize)] pub struct ValuedIfStatement { pub condition: ValuedIfCondition, pub nested: Option>, } #[derive(Clone, Debug, Serialize, Deserialize)] pub struct ValuedRule { pub name: String, pub connector_selection: O, pub statements: Vec, } #[derive(Clone, Debug, Serialize, Deserialize)] pub struct ValuedProgram { pub default_selection: O, pub rules: Vec>, pub metadata: Metadata, }