use std::collections::HashMap;
pub use crate::fieldgraph::spec::FieldSemantics;
pub use crate::fieldgraph::{FieldId, NodeSpec};
#[derive(Clone, Debug)]
pub struct NodeMeta {
pub id: FieldId,
pub spec: NodeSpec,
pub force_bake: bool,
pub semantics: Option<FieldSemantics>,
}
impl NodeMeta {
#[inline]
pub fn is_gate(&self) -> bool {
matches!(self.semantics, Some(FieldSemantics::Gate))
}
#[inline]
pub fn is_probability(&self) -> bool {
matches!(self.semantics, Some(FieldSemantics::Probability))
}
}
#[derive(Clone, Debug)]
pub struct FieldProgram {
pub nodes: HashMap<FieldId, NodeMeta>,
pub topo: Vec<FieldId>,
}