EFGraphVisitors.h
Go to the documentation of this file.
1 #ifndef EFGRAPHVISITORS_H_
2 #define EFGRAPHVISITORS_H_
3 
4 #include "IGraphVisitor.h"
5 #include "ExecutionFlowGraph.h"
6 
7 namespace concurrency {
8 
9  class RunSimulator : public IGraphVisitor {
10  public:
12  RunSimulator(const int& slotNum) {
13  m_nodesSucceeded = 0;
14  m_slotNum = slotNum;
15  };
17  virtual ~RunSimulator() {};
18 
19  virtual bool visitEnter(DecisionNode& node) const;
20 
21  virtual bool visit(DecisionNode& node);
22 
23  virtual bool visitLeave(DecisionNode& node) const;
24 
25 
26  virtual bool visitEnter(AlgorithmNode& node) const;
27 
28  virtual bool visit(AlgorithmNode& node);
29 
30 
31  virtual void reset() { m_nodesSucceeded = 0; }
32 
33  };
34 
38  class Trigger : public IGraphVisitor {
39  public:
41  Trigger(const int& slotNum) {
42  m_nodesSucceeded = 0;
43  m_slotNum = slotNum;
44  };
46  virtual ~Trigger() {};
47 
48  virtual bool visitEnter(DecisionNode& node) const;
49 
50  virtual bool visit(DecisionNode& node);
51 
52  virtual bool visitLeave(DecisionNode& node) const;
53 
54 
55  virtual bool visitEnter(AlgorithmNode& node) const;
56 
57  virtual bool visit(AlgorithmNode& node);
58 
59 
60  virtual void reset() { m_nodesSucceeded = 0; }
61 
62  };
63 
65  public:
68  m_nodesSucceeded = 0;
69  m_slotNum = -1;
70  };
73 
74  virtual bool visitEnter(DecisionNode&) const {return true;};
75 
76  virtual bool visit(DecisionNode&) {return true;};
77 
78  virtual bool visitLeave(DecisionNode&) const {return true;};
79 
80 
81  virtual bool visitEnter(AlgorithmNode&) const {return true;};
82 
83  virtual bool visit(AlgorithmNode& node);
84 
85 
86  virtual void reset() { m_nodesSucceeded = 0; }
87 
88  };
89 
91  public:
94  m_nodesSucceeded = 0;
95  m_slotNum = -1;
96  };
99 
100  virtual bool visitEnter(DecisionNode&) const {return true;};
101 
102  virtual bool visit(DecisionNode&) {return true;};
103 
104  virtual bool visitLeave(DecisionNode&) const {return true;};
105 
106 
107  virtual bool visitEnter(AlgorithmNode&) const {return true;};
108 
109  virtual bool visit(AlgorithmNode& node);
110 
111 
112  virtual void reset() { m_nodesSucceeded = 0; }
113 
114  void runThroughAdjacents(boost::graph_traits<boost::ExecPlan>::vertex_descriptor vertex, boost::ExecPlan graph);
115 
116  };
117 
118  class RankerByTiming : public IGraphVisitor {
119  public:
122  m_nodesSucceeded = 0;
123  m_slotNum = -1;
124  };
126  virtual ~RankerByTiming() {};
127 
128  virtual bool visitEnter(DecisionNode&) const {return true;};
129 
130  virtual bool visit(DecisionNode&) {return true;};
131 
132  virtual bool visitLeave(DecisionNode&) const {return true;};
133 
134 
135  virtual bool visitEnter(AlgorithmNode&) const {return true;};
136 
137  virtual bool visit(AlgorithmNode& node);
138 
139 
140  virtual void reset() { m_nodesSucceeded = 0; }
141 
142  };
143 
145  public:
148  m_nodesSucceeded = 0;
149  m_slotNum = -1;
150  };
152  virtual ~RankerByEccentricity() {};
153 
154  virtual bool visitEnter(DecisionNode&) const {return true;};
155 
156  virtual bool visit(DecisionNode&) {return true;};
157 
158  virtual bool visitLeave(DecisionNode&) const {return true;};
159 
160 
161  virtual bool visitEnter(AlgorithmNode&) const {return true;};
162 
163  virtual bool visit(AlgorithmNode& node);
164 
165 
166  virtual void reset() { m_nodesSucceeded = 0; }
167 
168  };
169 
171  public:
174  m_nodesSucceeded = 0;
175  m_slotNum = -1;
176  m_currentDepth = 0;
177  m_maxKnownDepth = 0;
178  };
181 
182  virtual bool visitEnter(DecisionNode&) const {return true;};
183 
184  virtual bool visit(DecisionNode&) {return true;};
185 
186  virtual bool visitLeave(DecisionNode&) const {return true;};
187 
188 
189  virtual bool visitEnter(AlgorithmNode&) const {return true;};
190 
191  virtual bool visit(AlgorithmNode& node);
192 
193 
194  virtual void reset() {
195  m_nodesSucceeded = 0;
196  m_currentDepth = 0;
197  m_maxKnownDepth = 0;
198  }
199 
202  void recursiveVisit(AlgorithmNode& node);
203 
206 
207  };
208 
209 }
210 
211 
212 
213 #endif /* EFGRAPHVISITORS_H_ */
virtual bool visitEnter(DecisionNode &node) const
virtual ~RunSimulator()
Destructor.
virtual bool visitLeave(DecisionNode &node) const
virtual bool visitEnter(AlgorithmNode &) const
virtual ~RankerByEccentricity()
Destructor.
virtual ~RankerByProductConsumption()
Destructor.
virtual void reset()
virtual bool visitEnter(AlgorithmNode &) const
boost::adjacency_list< boost::vecS, boost::vecS, boost::bidirectionalS, AlgoNodeStruct > ExecPlan
virtual bool visit(DecisionNode &node)
virtual bool visitEnter(AlgorithmNode &) const
void recursiveVisit(AlgorithmNode &node)
Depth-first node parser to calculate node eccentricity (only within the data realm of the execution f...
virtual bool visitLeave(DecisionNode &node) const
RunSimulator(const int &slotNum)
Constructor.
virtual bool visit(DecisionNode &)
A visitor, performing full top-down traversals of a graph.
virtual bool visitLeave(DecisionNode &) const
virtual ~RankerByCummulativeOutDegree()
Destructor.
virtual bool visitLeave(DecisionNode &) const
virtual bool visitEnter(DecisionNode &) const
virtual bool visitEnter(AlgorithmNode &) const
virtual bool visit(DecisionNode &)
virtual bool visitEnter(AlgorithmNode &) const
virtual ~RankerByDataRealmEccentricity()
Destructor.
virtual bool visitEnter(DecisionNode &) const
virtual bool visitEnter(DecisionNode &node) const
virtual bool visit(DecisionNode &node)
virtual bool visitEnter(DecisionNode &) const
virtual bool visitLeave(DecisionNode &) const
virtual ~Trigger()
Destructor.
virtual bool visit(DecisionNode &)
virtual ~RankerByTiming()
Destructor.
virtual bool visitEnter(DecisionNode &) const
void runThroughAdjacents(boost::graph_traits< boost::ExecPlan >::vertex_descriptor vertex, boost::ExecPlan graph)
virtual bool visit(DecisionNode &)
Trigger(const int &slotNum)
Constructor.
virtual bool visitEnter(DecisionNode &) const
virtual bool visitLeave(DecisionNode &) const
virtual bool visitLeave(DecisionNode &) const