Public Types | Public Member Functions | Static Public Member Functions | List of all members
Rose::BinaryAnalysis::ModelChecker::ShortestPathFirst Class Reference


Prioritize shorter paths.

Paths that are shorter (fewer steps) get higher priority. When used with the work queue, this results in a breadth-first search of the virtual execution tree. This is also useful for returning the "interesting" results since one often wants to give priorities to those results that are simpler (i.e., shorter).

Definition at line 42 of file PathPrioritizer.h.

#include <Rose/BinaryAnalysis/ModelChecker/PathPrioritizer.h>

Inheritance diagram for Rose::BinaryAnalysis::ModelChecker::ShortestPathFirst:
Inheritance graph
Collaboration diagram for Rose::BinaryAnalysis::ModelChecker::ShortestPathFirst:
Collaboration graph

Public Types

using Ptr = ShortestPathFirstPtr
- Public Types inherited from Rose::BinaryAnalysis::ModelChecker::PathPrioritizer
using Ptr = PathPrioritizerPtr

Public Member Functions

bool operator() (const PathPtr &worse, const PathPtr &better) const override
 Priority predicate. More...

Static Public Member Functions

static Ptr instance ()

Member Function Documentation

bool Rose::BinaryAnalysis::ModelChecker::ShortestPathFirst::operator() ( const PathPtr &  worse,
const PathPtr &  better 
) const

Priority predicate.

Given two paths, return true if path better should be explored before path worse, and false otherwise. This must be a strict weak ordering.

Note that the ordering predicate for C++ heaps is opposite the predicate for sorting containers with operator<. In other words, the item with the highest priority (not the lowest) is the one that will be taken next from the heap.

Thread safety: This method is thread safe. The base implementation is thread safe and all subclass implementations must also be thread safe.

Reimplemented from Rose::BinaryAnalysis::ModelChecker::PathPrioritizer.

The documentation for this class was generated from the following file: