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