DiaDes  0.1
DIAgnosis of Discrete-Event System
LabelledPrioritizedTimeNet.hh
Go to the documentation of this file.
1 /*
2  * @file: LabelledPrioritizedTimeNet.hh
3  * @author: Yannick PencolĂ©
4  *
5  * @date 22 March 2018, 12:30
6  */
7 
8 #ifndef __DIADES__PETRI__LABELLEDPRIORITIZEDTIMENET__HH__
9 #define __DIADES__PETRI__LABELLEDPRIORITIZEDTIMENET__HH__
10 
16 
17 namespace Diades
18 {
19  namespace Petri
20  {
21 
29  public:
30 
36  static string typeName() {
37  return "Diades::Petri::LabelledPrioritizedTimeNet";
38  }
39 
44  typedef ::Diades::Utils::Exception<LabelledPrioritizedTimeNet> Exception;
45 
46 
47  typedef int Time;
48  typedef ::Diades::Utils::Interval Interval;
49 
50  private:
52  list<Transition> _toDecompose;
53  vector<TimeDecomposedTransition> _decompositions;
55 
56  public:
57 
63  bool isTimeDecomposed(const Transition & t) const {
64  return _decIndex[t] != -1;
65  }
66 
67 
68  const vector<TimeDecomposedTransition> & decomposedTransitions() const {
69  return _decompositions;
70  }
71 
72 
73 
78  void timeDecomposition();
79 
87  void timeDecomposition(Event e);
88 
97  const Interval & staticInterval(const Transition & t) const {
98  return _staticInterval[t];
99  }
100 
106  _staticInterval(),
107  _toDecompose(),
108  _decompositions(),
109  _decIndex() {
110  _staticInterval.init(graph());
111  _decIndex.init(graph());
112  }
113 
118 
132  virtual Transition newTransition(const set<Place> & pre,
133  const set<Place> & post,
134  const string & name,
135  const Interval & interval,
136  Event event);
137 
138 
139 
145  virtual void nameOfTransition2Dot(ostream & os,
146  Transition transition)
147  const;
148 
149 
150  // ??void mergeNonTriggeredPlaces();
151 
152  protected:
153 
159  virtual void net2TinaTransitionInterval(ostream & os,
160  Transition trans) const {
161  os << _staticInterval[trans].toTina();
162  }
163 
164 
165 
166 
174  virtual size_t timeDecomposition(Transition t);
175 
176 
177 
196 
197 
198 
199  public:
200 
216  virtual Place makeEventConflictFree(Place p);
217 
218 
222  virtual void makeEventConflictFree();
223 
224  };
225  };
226 
227 };
228 
229 #endif /* __DIADES__PETRI__LABELLEDPRIORITIZEDTIMENET__HH__ */
230 
virtual Transition newTransition(const set< Place > &pre, const set< Place > &post, const string &name, const Interval &interval, Event event)
virtual void net2TinaTransitionInterval(ostream &os, Transition trans) const
Diades::Graph::Node Transition
Definition: BoundedNet.hh:31
virtual void nameOfTransition2Dot(ostream &os, Transition transition) const
::Diades::Utils::Exception< LabelledPrioritizedTimeNet > Exception
PetriEventManager::EventId Event
Definition: LabelledNet.hh:39
Diades::Graph::Node Place
Definition: BoundedNet.hh:24
virtual Transition shiftTransition(Transition t)
const Diades::Graph::Graph & graph() const
Definition: BoundedNet.hh:420
vector< TimeDecomposedTransition > _decompositions
Namespace of the Diades project.
const vector< TimeDecomposedTransition > & decomposedTransitions() const
Diades::Graph::ConstNodeMap< int > _decIndex
const Interval & staticInterval(const Transition &t) const
const string & name() const
Definition: BoundedNet.hh:388
void init(const Graph &g, SizeType capacity=0, ValueType dflt=ValueType())
Diades::Graph::ConstNodeMap< Interval > _staticInterval