ROSE  0.11.51.0
ExecutionManager.h
1 #ifndef ROSE_BinaryAnalysis_Concolic_ExecutionManager_H
2 #define ROSE_BinaryAnalysis_Concolic_ExecutionManager_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_CONCOLIC_TESTING
5 #include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
6 
7 #include <boost/noncopyable.hpp>
8 #include <Sawyer/SharedObject.h>
9 #include <vector>
10 
11 namespace Rose {
12 namespace BinaryAnalysis {
13 namespace Concolic {
14 
19 class ExecutionManager: boost::noncopyable, public Sawyer::SharedObject {
20 public:
23 
24 private:
25  DatabasePtr database_;
26 
27 protected:
28  // Subclasses should implement allocating constructors
29  explicit ExecutionManager(const DatabasePtr &db);
30 
31 public:
32  virtual ~ExecutionManager();
33 
37  DatabasePtr database() const;
38 
45  virtual std::vector<TestCaseId> pendingConcreteResults(size_t n = UNLIMITED);
46  TestCaseId pendingConcreteResult() /*final*/;
54  virtual void insertConcreteResults(const TestCasePtr&, const ConcreteExecutorResult &details);
55 
62  virtual std::vector<TestCaseId> pendingConcolicResults(size_t n = UNLIMITED);
63  TestCaseId pendingConcolicResult() /*final*/;
71  virtual void insertConcolicResults(const TestCasePtr &original, const std::vector<TestCasePtr> &newCases);
72 
76  virtual bool isFinished() const;
77 
82  virtual void run() = 0;
83 };
84 
85 } // namespace
86 } // namespace
87 } // namespace
88 
89 #endif
90 #endif
Sawyer::SharedPointer< Node > Ptr
Shared-ownership pointer to an expression Node.
Definition: SymbolicExpr.h:156
const size_t UNLIMITED(-1)
Effictively unlimited size.
Main namespace for the ROSE library.
Reference-counting intrusive smart pointer.
Definition: SharedPointer.h:68
Base class for reference counted objects.
Definition: SharedObject.h:64