1#ifndef ROSE_BinaryAnalysis_ModelChecker_PathQueue_H
2#define ROSE_BinaryAnalysis_ModelChecker_PathQueue_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_MODEL_CHECKER
6#include <Rose/BinaryAnalysis/ModelChecker/BasicTypes.h>
9namespace BinaryAnalysis {
10namespace ModelChecker {
16class PathQueue final {
27 virtual bool operator()(
const PathPtr&) = 0;
31 mutable SAWYER_THREAD_TRAITS::Mutex mutex_;
32 PathPrioritizerPtr prioritizer_;
33 std::vector<PathPtr> paths_;
41 PathQueue(
const PathPrioritizerPtr&);
56 PathPrioritizerPtr prioritizer()
const;
57 void prioritizer(
const PathPrioritizerPtr&);
86 void insert(
const PathPtr&);
103 void traverse(Visitor&)
const;