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/BasicTypes.h>
9namespace BinaryAnalysis {
10namespace ModelChecker {
17class PathPrioritizer {
19 using Ptr = PathPrioritizerPtr;
22 virtual ~PathPrioritizer();
34 virtual bool operator()(
const PathPtr &worse,
const PathPtr &better)
const;
42class ShortestPathFirst:
public PathPrioritizer {
44 using Ptr = ShortestPathFirstPtr;
46 static Ptr instance();
48 bool operator()(
const PathPtr &worse,
const PathPtr &better)
const override;
55class LongestPathFirst:
public PathPrioritizer {
57 using Ptr = LongestPathFirstPtr;
59 static Ptr instance();
61 bool operator()(
const PathPtr &worse,
const PathPtr &better)
const override;
67class FastestPathFirst:
public PathPrioritizer {
69 using Ptr = FastestPathFirstPtr;
71 static Ptr instance();
73 bool operator()(
const PathPtr &worse,
const PathPtr &better)
const override;
79class RandomPathFirst:
public PathPrioritizer {
81 using Ptr = RandomPathFirstPtr;
83 static Ptr instance();
85 bool operator()(
const PathPtr &worse,
const PathPtr &better)
const override;
93class BestCoverageFirst:
public PathPrioritizer {
95 using Ptr = BestCoverageFirstPtr;
96 static Ptr instance();
97 bool operator()(
const PathPtr &worse,
const PathPtr &better)
const override;
99 static double coverageRatio(
const PathPtr&);
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.