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 <Sawyer/SharedObject.h>
9#include <Sawyer/SharedPointer.h>
12namespace BinaryAnalysis {
28 using Ptr = ConcreteExecutorPtr;
36 explicit ConcreteExecutor(
const std::string&);
37 explicit ConcreteExecutor(
const DatabasePtr&);
53 static void registerFactory(
const Ptr &factory);
61 static bool deregisterFactory(
const Ptr &factory);
69 static std::vector<Ptr> registeredFactories();
79 static Ptr forge(
const DatabasePtr&,
const std::string &name);
82 virtual bool matchFactory(
const std::string &name)
const = 0;
88 virtual Ptr instanceFromFactory(
const DatabasePtr&) = 0;
95 bool isFactory()
const;
107 const std::string& name()
const;
108 void name(
const std::string&);
112 DatabasePtr database()
const;
122 virtual ConcreteResultPtr execute(
const TestCasePtr&) = 0;
151 void executionMonitor(
const boost::filesystem::path& executorName)
153 execmon = executorName;
157 boost::filesystem::path executionMonitor()
const
165 boost::filesystem::path execmon;
Base class for reference counted objects.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.