about summary refs log tree commit diff homepage
path: root/include
diff options
context:
space:
mode:
authorHristina Palikareva <h.palikareva@imperial.ac.uk>2013-10-04 18:32:55 +0100
committerHristina Palikareva <h.palikareva@imperial.ac.uk>2013-10-11 20:02:33 +0100
commit64868646eed7384c38db41aff5002215b92c1601 (patch)
tree974ee540ed95b23c3a561c17ab710aadeece72f7 /include
parentbd233936e40f019e0ab066440dc13398ae6754f6 (diff)
downloadklee-64868646eed7384c38db41aff5002215b92c1601.tar.gz
MetaSMT builder, solver and command-line options.
Diffstat (limited to 'include')
-rw-r--r--include/klee/CommandLine.h9
-rw-r--r--include/klee/Solver.h15
2 files changed, 24 insertions, 0 deletions
diff --git a/include/klee/CommandLine.h b/include/klee/CommandLine.h
index 38b22c6f..c755114b 100644
--- a/include/klee/CommandLine.h
+++ b/include/klee/CommandLine.h
@@ -43,6 +43,15 @@ enum QueryLoggingSolverType
  */
 extern llvm::cl::list<QueryLoggingSolverType> queryLoggingOptions;
 
+enum MetaSMTBackendType
+{
+    METASMT_BACKEND_NONE,
+    METASMT_BACKEND_STP,
+    METASMT_BACKEND_Z3,
+    METASMT_BACKEND_BOOLECTOR
+};
+
+extern llvm::cl::opt<klee::MetaSMTBackendType> UseMetaSMT;
 
 //A bit of ugliness so we can use cl::list<> like cl::bits<>, see queryLoggingOptions
 template <typename T>
diff --git a/include/klee/Solver.h b/include/klee/Solver.h
index 8fe33c7c..00e4c962 100644
--- a/include/klee/Solver.h
+++ b/include/klee/Solver.h
@@ -219,6 +219,21 @@ namespace klee {
     virtual void setCoreSolverTimeout(double timeout);
   };
 
+  
+#ifdef SUPPORT_METASMT
+  
+  template<typename SolverContext>
+  class MetaSMTSolver : public Solver {
+  public:
+    MetaSMTSolver(bool useForked, bool optimizeDivides);
+    virtual ~MetaSMTSolver();
+  
+    virtual char *getConstraintLog(const Query&);
+    virtual void setCoreSolverTimeout(double timeout);
+};
+
+#endif /* SUPPORT_METASMT */
+
   /* *** */
 
   /// createValidatingSolver - Create a solver which will validate all query