/* * ezSAT -- A simple and easy to use CNF generator for SAT solvers * * Copyright (C) 2013 Clifford Wolf * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ #ifndef EZMINISAT_H #define EZMINISAT_H #include "ezsat.h" #include // minisat is using limit macros and format macros in their headers that // can be the source of some troubles when used from c++11. thefore we // don't force ezSAT users to use minisat headers.. namespace Minisat { class Solver; } class ezMiniSAT : public ezSAT { private: Minisat::Solver *minisatSolver; std::vector minisatVars; bool foundContradiction; static ezMiniSAT *alarmHandlerThis; static clock_t alarmHandlerTimeout; static void alarmHandler(int); public: ezMiniSAT(); virtual ~ezMiniSAT(); virtual void clear(); virtual bool solver(const std::vector &modelExpressions, std::vector &modelValues, const std::vector &assumptions); }; #endif