00001 00007 #ifndef _FORMULA_H 00008 #define _FORMULA_H_ 00009 00010 #include <vector> 00011 #include <string> 00012 #include <fstream> 00013 00014 #include "clause.h" 00015 #include "variableset.h" 00016 00017 #define CLAUSE_BUFFER_SIZE 10000 00018 00019 namespace cnf { 00020 00035 class Formula 00036 { 00037 private: 00044 VariableSet * varSet; 00045 00050 std::vector<Clause> cnfs; 00051 00057 Clause bufferClause; 00058 00063 std::ostream * output; 00064 00065 00066 public: 00081 Formula(VariableSet*, std::ostream*, std::string); 00082 00087 ~Formula(); 00088 00093 void newClause(); 00094 00104 void addLit(unsigned int, bool, unsigned int, unsigned int); 00105 00116 void addLit(unsigned int, bool, 00117 unsigned int, unsigned int, unsigned int); 00118 00126 void addLitCode(int); 00127 00132 void pushClause(); 00133 00138 void flushCNF(); 00139 }; 00140 00141 00142 } // closing namespace 00143 00144 #endif