ROSE  0.11.145.0
PathPrioritizer.h
1 #ifndef ROSE_BinaryAnalysis_ModelChecker_PathPrioritizer_H
2 #define ROSE_BinaryAnalysis_ModelChecker_PathPrioritizer_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_MODEL_CHECKER
5 
6 #include <Rose/BinaryAnalysis/ModelChecker/Types.h>
7 
8 namespace Rose {
9 namespace BinaryAnalysis {
10 namespace ModelChecker {
11 
17 class PathPrioritizer {
18 public:
19  using Ptr = PathPrioritizerPtr;
20 
21  PathPrioritizer();
22  virtual ~PathPrioritizer();
23 
34  virtual bool operator()(const PathPtr &worse, const PathPtr &better) const;
35 };
36 
42 class ShortestPathFirst: public PathPrioritizer {
43 public:
44  using Ptr = ShortestPathFirstPtr;
45 
46  static Ptr instance();
47 
48  bool operator()(const PathPtr &worse, const PathPtr &better) const override;
49 };
50 
55 class LongestPathFirst: public PathPrioritizer {
56 public:
57  using Ptr = LongestPathFirstPtr;
58 
59  static Ptr instance();
60 
61  bool operator()(const PathPtr &worse, const PathPtr &better) const override;
62 };
63 
67 class FastestPathFirst: public PathPrioritizer {
68 public:
69  using Ptr = FastestPathFirstPtr;
70 
71  static Ptr instance();
72 
73  bool operator()(const PathPtr &worse, const PathPtr &better) const override;
74 };
75 
79 class RandomPathFirst: public PathPrioritizer {
80 public:
81  using Ptr = RandomPathFirstPtr;
82 
83  static Ptr instance();
84 
85  bool operator()(const PathPtr &worse, const PathPtr &better) const override;
86 };
87 
93 class BestCoverageFirst: public PathPrioritizer {
94 public:
95  using Ptr = BestCoverageFirstPtr;
96  static Ptr instance();
97  bool operator()(const PathPtr &worse, const PathPtr &better) const override;
98 private:
99  static double coverageRatio(const PathPtr&);
100 };
101 
102 } // namespace
103 } // namespace
104 } // namespace
105 
106 #endif
107 #endif
Main namespace for the ROSE library.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.