#ifndef _basesolver_hpp_INCLUDED #define _basesolver_hpp_INCLUDED #include "../light.hpp" #include "../utils/vec.hpp" #include "clause.hpp" #include #include class basesolver { public: virtual void parse_dimacs(char* filename) = 0; virtual void import_original_clause(preprocess* pre) = 0; virtual void diversity(int id) = 0; virtual int solve() = 0; virtual void terminate() = 0; virtual void get_model(vec &model) = 0; virtual int get_reset_data() = 0; virtual void reset() = 0; virtual void export_clauses_to(vec &clauses) = 0; virtual void import_clauses_from(vec &clauses) = 0; virtual void broaden_export_limit() = 0; virtual void restrict_export_limit() = 0; light * controller; int id; basesolver(int sid, light* light) : id(sid), controller(light) {} ~basesolver() { printf("destru %dbase\n", id); if (controller) { controller = NULL; } } }; #endif