1 #ifndef ROSE_BinaryAnalysis_ModelChecker_PathPrioritizer_H
2 #define ROSE_BinaryAnalysis_ModelChecker_PathPrioritizer_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_MODEL_CHECKER
6 #include <Rose/BinaryAnalysis/ModelChecker/Types.h>
9 namespace BinaryAnalysis {
10 namespace ModelChecker {
17 class PathPrioritizer {
19 using Ptr = PathPrioritizerPtr;
22 virtual ~PathPrioritizer();
34 virtual bool operator()(
const PathPtr &worse,
const PathPtr &better)
const;
42 class ShortestPathFirst:
public PathPrioritizer {
44 using Ptr = ShortestPathFirstPtr;
46 static Ptr instance();
48 bool operator()(
const PathPtr &worse,
const PathPtr &better)
const override;
55 class LongestPathFirst:
public PathPrioritizer {
57 using Ptr = LongestPathFirstPtr;
59 static Ptr instance();
61 bool operator()(
const PathPtr &worse,
const PathPtr &better)
const override;
67 class FastestPathFirst:
public PathPrioritizer {
69 using Ptr = FastestPathFirstPtr;
71 static Ptr instance();
73 bool operator()(
const PathPtr &worse,
const PathPtr &better)
const override;
79 class RandomPathFirst:
public PathPrioritizer {
81 using Ptr = RandomPathFirstPtr;
83 static Ptr instance();
85 bool operator()(
const PathPtr &worse,
const PathPtr &better)
const override;
Main namespace for the ROSE library.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.