DiaDes  0.1
DIAgnosis of Discrete-Event System
TimeReachabilityGraph.hh
Go to the documentation of this file.
1 #ifndef __DIADES__PETRI__TIMEREACHABILITYGRAPH__HH
2 #define __DIADES__PETRI__TIMEREACHABILITYGRAPH__HH
3 
4 #include <string>
5 #include <set>
6 #include <unordered_map>
9 #include <diades/graph/Graph.hh>
10 #include <diades/graph/NodeMap.hh>
11 #include <diades/graph/EdgeMap.hh>
13 
14 using namespace std;
15 
16 namespace Diades
17 {
18  namespace Petri
19  {
26  {
27  public:
28  static string typeName() { return "Diades::Petri::TimeReachabilityGraph"; }
31  typedef unordered_map< string,Diades::Utils::Interval>::const_iterator TimeConstraintsIterator;
32  private:
33  TimeConstraints _constraints;
34 
35  public:
37  {
38  _constraints.init(graph());
39  }
41  {}
48  virtual void addTimeConstraint(RState state, const string & transitionName,
49  const Diades::Utils::Interval & interval)
50  {
51  require(Exception,state.valid() && &state.owner() == &graph(),"addTimeConstraint: invalid state");
52  require(Exception,!transitionName.empty(),"addTimeConstraint: empty label");
53  _constraints[state][transitionName] = interval;
54  }
55 
60  TimeConstraintsIterator constraintBegin(RState state) const
61  {
62  require(Exception,state.valid() && &state.owner() == &graph(),"addTimeConstraint: invalid state");
63  return _constraints[state].begin();
64  }
65 
66 
67 
72  TimeConstraintsIterator constraintEnd(RState state) const
73  {
74  require(Exception,state.valid() && &state.owner() == &graph(),"addTimeConstraint: invalid state");
75  return _constraints[state].end();
76  }
77 
78 
79 
84  virtual bool exportGraphToDot(const string & fileDot);
85 
86  };
87 
88  };
89 };
90 
91 #endif
TimeConstraintsIterator constraintBegin(RState state) const
STL namespace.
virtual void addTimeConstraint(RState state, const string &transitionName, const Diades::Utils::Interval &interval)
unordered_map< string, Diades::Utils::Interval >::const_iterator TimeConstraintsIterator
Diades::Graph::NodeMap< unordered_map< string, Diades::Utils::Interval > > TimeConstraints
TimeConstraintsIterator constraintEnd(RState state) const
Diades::Utils::Exception< TimeReachabilityGraph > Exception
#define require(Exception, expr, message)
Definition: Assertion.hh:90
Namespace of the Diades project.