1 #ifndef __DIADES_PETRI_LABELLEDNET__HH__ 2 #define __DIADES_PETRI_LABELLEDNET__HH__ 4 #include<unordered_set> 30 return "Diades::Petri::LabelledNet";
144 const unordered_set<Event> & syncEvents,
145 std::unordered_map<
Transition, std::list<Transition> > & lpn1SyncTrans,
146 std::unordered_map<
Transition, std::list<Transition> > & lpn2SyncTrans,
147 unordered_map<
Transition, std::pair<Transition, Transition>> &synchronisations,
148 std::unordered_map< Place, Place > & lpn1Place,
149 std::unordered_map< Place, Place > & lpn2Place,
150 std::unordered_map<
Place, std::pair<Place, Place> > & syncPlaces);
195 const set<Place> & post,
210 return _eventList.begin();
219 return _eventList.end();
230 require(Exception, t.valid(),
"getEvent: invalid transition");
231 require(Exception, &t.owner() == &
_graph,
"getEvent: the transition does not belong to the Petri Net");
232 require(Exception,
_nodeType[t] ==
T,
"getEvent; this is not a transition but a place");
243 return _eventTransitions.find(event) != _eventTransitions.end();
253 TransitionEventIterator
256 Msg(
"beginOfTransitionWithEvent: the event %1% (i.e. %2%) is not associated to a transition of this Petri Net")
258 return _eventTransitions.at(event).begin();
266 TransitionEventIterator
269 Msg(
"endOfTransitionWithEvent: the event %1% (i.e. %2%) is not associated to a transition of this Petri Net")
271 return _eventTransitions.at(event).end();
351 const unordered_set<Event> & syncEvents,
356 std::unordered_map<
Transition, std::list<Transition> > & lpn1SyncTrans,
357 std::unordered_map<
Transition, std::list<Transition> > & lpn2SyncTrans,
358 std::unordered_map<
Transition, std::pair<Transition, Transition> > & syncTransitions,
359 std::unordered_map< Place, Place > & lppn1Place,
360 std::unordered_map< Place, Place > & lppn2Place,
361 std::unordered_map<
Place, std::pair<Place, Place> > & syncPlaces);
unordered_set< Transition >::const_iterator TransitionEventIterator
unordered_set< Transition >::const_iterator EventTransitionIterator
virtual Transition newTransition(const set< Place > &pre, const set< Place > &post, const string &name, Event e)
EventIterator endOfEvents() const
Diades::Graph::Node Transition
typename IM::InfoId EventId
virtual void copyLabelledNet(const LabelledNet &net, Diades::Graph::ConstNodeMap< Diades::Graph::Node > &nodeMap, Diades::Graph::NodeMap< Diades::Graph::Node > &nodeMapCopy, Diades::Graph::ConstEdgeMap< Diades::Graph::Edge > &edgeMap, Diades::Graph::EdgeMap< Diades::Graph::Edge > &edgeMapCopy)
PetriEventManager::EventId Event
LabelledNet & merge(const LabelledNet &lpn1, const LabelledNet &lpn2, const unordered_set< Event > &syncEvents, std::unordered_map< Transition, std::list< Transition > > &lpn1SyncTrans, std::unordered_map< Transition, std::list< Transition > > &lpn2SyncTrans, unordered_map< Transition, std::pair< Transition, Transition >> &synchronisations, std::unordered_map< Place, Place > &lpn1Place, std::unordered_map< Place, Place > &lpn2Place, std::unordered_map< Place, std::pair< Place, Place > > &syncPlaces)
Diades::Graph::Node Place
Transition duplicateTransition(Transition t)
set< Event >::const_iterator EventIterator
bool containsEvent(Event event) const
unordered_map< Event, unordered_set< Transition > > _eventTransitions
TransitionEventIterator beginOfTransitionWithEvent(Event event) const
const Diades::Graph::Graph & graph() const
LabelledNet & operator=(const LabelledNet &net)
virtual void deleteTransition(Transition t)
Diades::Graph::NodeMap< NodeType > _nodeType
#define require(Exception, expr, message)
const Event & getEvent(EventId id) const
Namespace of the Diades project.
Diades::Graph::ConstNodeMap< Event > _event
LabelledNet & append(const LabelledNet &net)
Diades::Utils::Exception< LabelledNet > Exception
Event getEvent(Transition t) const
virtual void mergeLabelledNet(const LabelledNet &lpn1, const LabelledNet &lpn2, const unordered_set< Event > &syncEvents, Diades::Graph::ConstNodeMap< Diades::Graph::Node > &nodeMapLpn1, Diades::Graph::NodeMap< Diades::Graph::Node > &nodeMapFromLpn1, Diades::Graph::ConstNodeMap< Diades::Graph::Node > &nodeMapLpn2, Diades::Graph::NodeMap< Diades::Graph::Node > &nodeMapFromLpn2, std::unordered_map< Transition, std::list< Transition > > &lpn1SyncTrans, std::unordered_map< Transition, std::list< Transition > > &lpn2SyncTrans, std::unordered_map< Transition, std::pair< Transition, Transition > > &syncTransitions, std::unordered_map< Place, Place > &lppn1Place, std::unordered_map< Place, Place > &lppn2Place, std::unordered_map< Place, std::pair< Place, Place > > &syncPlaces)
virtual void nameOfTransition2Dot(ostream &os, Transition transition) const
virtual void appendLabelledNet(const LabelledNet &net, Diades::Graph::ConstNodeMap< Diades::Graph::Node > &nodeMap, Diades::Graph::NodeMap< Diades::Graph::Node > &nodeMapCopy, Diades::Graph::ConstEdgeMap< Diades::Graph::Edge > &edgeMap, Diades::Graph::EdgeMap< Diades::Graph::Edge > &edgeMapCopy)
Diades::Graph::Graph _graph
const string & name() const
void init(const Graph &g, SizeType capacity=0, ValueType dflt=ValueType())
static PetriEventManager & petriEventManager()
EventIterator beginOfEvents() const
const string & nameOfTransition(Transition transition) const
virtual void net2TinaTransitionName(ostream &os, Transition trans) const
TransitionEventIterator endOfTransitionWithEvent(Event event) const