ourfree(cnf);
}
+void resetCNF(CNF *cnf){
+ for (uint i = 0; i < cnf->capacity; i++) {
+ Node *n = cnf->node_array[i];
+ if (n != NULL)
+ ourfree(n);
+ }
+ clearVectorEdge(&cnf->constraints);
+ clearVectorEdge(&cnf->args);
+ deleteIncrementalSolver(cnf->solver);
+ memset(cnf->node_array, 0, sizeof(Node *) * cnf->capacity);
+
+ cnf->varcount = 1;
+ cnf->size = 0;
+ cnf->enableMatching = true;
+ cnf->solver = allocIncrementalSolver();
+ cnf->solveTime = 0;
+ cnf->encodeTime = 0;
+}
+
void resizeCNF(CNF *cnf, uint newCapacity) {
Node **old_array = cnf->node_array;
Node **new_array = (Node **) ourcalloc(1, sizeof(Node *) * newCapacity);
CNF *createCNF();
void deleteCNF(CNF *cnf);
+void resetCNF(CNF *cnf);
uint hashNode(NodeType type, uint numEdges, Edge *edges);
Node *allocNode(NodeType type, uint numEdges, Edge *edges, uint hashCode);
/** This function tears down the solver and the entire AST */
CSolver::~CSolver() {
- serialize();
+ //serialize();
uint size = allBooleans.getSize();
for (uint i = 0; i < size; i++) {
delete allBooleans.get(i);
delete satEncoder;
}
+void CSolver::resetSolver(){
+ //serialize();
+ uint size = allBooleans.getSize();
+ for (uint i = 0; i < size; i++) {
+ delete allBooleans.get(i);
+ }
+
+ size = allSets.getSize();
+ for (uint i = 0; i < size; i++) {
+ delete allSets.get(i);
+ }
+
+ size = allElements.getSize();
+ for (uint i = 0; i < size; i++) {
+ Element* el = allElements.get(i);
+ delete el;
+ }
+
+ size = allTables.getSize();
+ for (uint i = 0; i < size; i++) {
+ delete allTables.get(i);
+ }
+
+ size = allPredicates.getSize();
+ for (uint i = 0; i < size; i++) {
+ delete allPredicates.get(i);
+ }
+
+ size = allOrders.getSize();
+ for (uint i = 0; i < size; i++) {
+ delete allOrders.get(i);
+ }
+ size = allFunctions.getSize();
+ for (uint i = 0; i < size; i++) {
+ delete allFunctions.get(i);
+ }
+ delete boolTrue.getBoolean();
+ allBooleans.clear();
+ allSets.clear();
+ allElements.clear();
+ allTables.clear();
+ allPredicates.clear();
+ allOrders.clear();
+ allFunctions.clear();
+ constraints.reset();
+ activeOrders.reset();
+ boolMap.reset();
+ elemMap.reset();
+
+ boolTrue = BooleanEdge(new BooleanConst(true));
+ boolFalse = boolTrue.negate();
+ unsat = false;
+ elapsedTime = 0;
+ tuner = NULL;
+ satEncoder->resetSATEncoder();
+
+}
+
CSolver *CSolver::clone() {
CSolver *copy = new CSolver();
CloneMap map;