use crate::{arc, Marking, PlaceId, TransitionId};
#[derive(Default, Debug, Clone)]
pub struct Transition {
pub(crate) id: TransitionId,
pub label: Option<String>,
pub consume: Marking<PlaceId>,
pub produce: Marking<PlaceId>,
pub deleted: bool,
}
impl Transition {
#[must_use]
pub fn id(&self) -> TransitionId {
self.id
}
#[must_use]
pub fn is_disconnected(&self) -> bool {
self.consume.is_empty() && self.produce.is_empty()
}
#[must_use]
pub fn get_arcs(&self) -> Vec<arc::Kind> {
let mut arcs = vec![];
for &(pl, w) in self.consume.iter() {
arcs.push(arc::Kind::Consume(pl, self.id, w))
}
for &(pl, w) in self.produce.iter() {
arcs.push(arc::Kind::Produce(pl, self.id, w))
}
arcs
}
}