24 const Query* falseQuery = 0,
25 const std::vector<const Array*>* objects = 0) {
30 if (0 != falseQuery) {
31 evalExprsBegin = &query.
expr;
32 evalExprsEnd = &query.
expr + 1;
35 const Array*
const *evalArraysBegin = 0;
36 const Array*
const *evalArraysEnd = 0;
38 if ((0 != objects) && (
false == objects->empty())) {
39 evalArraysBegin = &((*objects)[0]);
40 evalArraysEnd = &((*objects)[0]) + objects->
size();
43 const Query* q = (0 == falseQuery) ? &query : falseQuery;
46 evalExprsBegin, evalExprsEnd,
47 evalArraysBegin, evalArraysEnd);
64 time::Span minQueryTimeToLog,
bool logTimedOut) {
KQueryLoggingSolver(Solver *_solver, std::string path, time::Span queryTimeToLog, bool logTimedOut)
virtual ~KQueryLoggingSolver()
virtual void printQuery(const Query &query, const Query *falseQuery=0, const std::vector< const Array * > *objects=0)
llvm::raw_string_ostream logBuffer
static void printQuery(llvm::raw_ostream &os, const ConstraintSet &constraints, const ref< Expr > &q, const ref< Expr > *evalExprsBegin=0, const ref< Expr > *evalExprsEnd=0, const Array *const *evalArraysBegin=0, const Array *const *evalArraysEnd=0, bool printArrayDecls=true)
Solver * createKQueryLoggingSolver(Solver *s, std::string path, time::Span minQueryTimeToLog, bool logTimedOut)
const ConstraintSet & constraints