pub struct Net {
pub name: String,
pub transitions: IndexVec<TransitionId, Transition>,
pub places: IndexVec<PlaceId, Place>,
/* private fields */
}Expand description
Standard Petri net, with only produce and consume arcs
This structure is indexed with PlaceId and TransitionId to allow easy access to places
and transitions.
As this kind of network is a subset of timed Petri net, so we can create one from timed Petri
net (but you loose arc::Kind::Inhibitor, arc::Kind::StopWatch and
arc::Kind::StopWatchInhibitor arcs and timings).
Fields§
§name: StringName of this network
transitions: IndexVec<TransitionId, Transition>Transitions of the network
places: IndexVec<PlaceId, Place>Places of the network
Implementations§
Source§impl Net
impl Net
Sourcepub fn create_place(&mut self) -> PlaceId
pub fn create_place(&mut self) -> PlaceId
Create a place in the network without name and return its index
Sourcepub fn create_transition(&mut self) -> TransitionId
pub fn create_transition(&mut self) -> TransitionId
Create a transition in the network without name and return its index
Sourcepub fn get_name_by_index(&self, index: &NodeId) -> Option<String>
pub fn get_name_by_index(&self, index: &NodeId) -> Option<String>
Get node name with its id
Sourcepub fn get_index_by_name(&self, name: &str) -> Option<NodeId>
pub fn get_index_by_name(&self, name: &str) -> Option<NodeId>
Get node id with its name
Sourcepub fn add_arc(&mut self, arc: Kind) -> Result<(), NetError>
pub fn add_arc(&mut self, arc: Kind) -> Result<(), NetError>
Add an arc in the network. This kind of network support only arc::Kind::Consume and
arc::Kind::Produce arcs.
§Errors
Return NetError::UnsupportedArc when trying to add a kind of arc which is not supported
Sourcepub fn delete_place(&mut self, place: PlaceId)
pub fn delete_place(&mut self, place: PlaceId)
Disconnect a place in the network
The place is not really deleted to avoid memory relocation and extra information about this place such as name can be useful later.
Sourcepub fn delete_transition(&mut self, transition: TransitionId)
pub fn delete_transition(&mut self, transition: TransitionId)
Disconnect a transition in the network
The transition is not really deleted to avoid memory relocation and extra information about this transitions such as name can be useful later.
Sourcepub fn clone_place(&mut self, old_pl: PlaceId) -> PlaceId
pub fn clone_place(&mut self, old_pl: PlaceId) -> PlaceId
Clone an existing place with all its arcs
Sourcepub fn new_without_disconnected(
&self,
) -> (Net, IndexVec<TransitionId, TransitionId>, IndexVec<PlaceId, PlaceId>)
pub fn new_without_disconnected( &self, ) -> (Net, IndexVec<TransitionId, TransitionId>, IndexVec<PlaceId, PlaceId>)
Create a new network without all disconected nodes and without labels to avoid extra memory consumption.
It returns a new network and the mapping between old indexes and new indexes.