1 #ifndef ROSE_BinaryAnalysis_Concolic_ConcreteExecutor_H
2 #define ROSE_BinaryAnalysis_Concolic_ConcreteExecutor_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_CONCOLIC_TESTING
5 #include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
7 #include <boost/filesystem.hpp>
8 #include <rose_isnan.h>
9 #include <Sawyer/SharedObject.h>
10 #include <Sawyer/SharedPointer.h>
13 namespace BinaryAnalysis {
26 class ConcreteExecutorResult {
32 ConcreteExecutorResult()
33 : rank_(0.0), isInteresting_(true) {}
35 explicit ConcreteExecutorResult(
double rank)
36 : rank_(rank), isInteresting_(true) {
37 ASSERT_forbid(rose_isnan(rank));
40 virtual ~ConcreteExecutorResult() {}
42 double rank()
const {
return rank_; }
43 void rank(
double r) { rank_ = r; }
45 bool isInteresting()
const {
return isInteresting_; }
46 void isInteresting(
bool b) { isInteresting_ = b; }
49 friend class boost::serialization::access;
53 s & BOOST_SERIALIZATION_NVP(rank_);
77 explicit ConcreteExecutor(
const DatabasePtr&);
83 DatabasePtr database()
const;
89 virtual ConcreteExecutorResult* execute(
const TestCasePtr&) = 0;
114 void executionMonitor(
const boost::filesystem::path& executorName)
116 execmon = executorName;
120 boost::filesystem::path executionMonitor()
const
128 boost::filesystem::path execmon;
void serialize(std::ostream &output, Graph &graph)
Serialize a graph into a stream of bytes.
Main namespace for the ROSE library.
Reference-counting intrusive smart pointer.
Base class for reference counted objects.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.