Commit after resolving conflicts
[satune.git] / src / csolver.c
index 7a9d1e0d2870ce3c87d4adf828fc9665655af3a4..b35680caae5b7a7a8f29710d32cdc2cae4c3edbf 100644 (file)
@@ -30,33 +30,38 @@ void deleteSolver(CSolver *This) {
        for(uint i=0;i<size;i++) {
                deleteBoolean(getVectorBoolean(This->allBooleans, i));
        }
-
        deleteVectorBoolean(This->allBooleans);
 
        size=getSizeVectorSet(This->allSets);
        for(uint i=0;i<size;i++) {
                deleteSet(getVectorSet(This->allSets, i));
        }
-
        deleteVectorSet(This->allSets);
 
        size=getSizeVectorElement(This->allElements);
        for(uint i=0;i<size;i++) {
                deleteElement(getVectorElement(This->allElements, i));
        }
+       deleteVectorElement(This->allElements);
+
        size=getSizeVectorTable(This->allTables);
        for(uint i=0;i<size;i++) {
                deleteTable(getVectorTable(This->allTables, i));
        }
+       deleteVectorTable(This->allTables);
+       
        size=getSizeVectorPredicate(This->allPredicates);
        for(uint i=0;i<size;i++) {
                deletePredicate(getVectorPredicate(This->allPredicates, i));
        }
+       deleteVectorPredicate(This->allPredicates);
+
        size=getSizeVectorOrder(This->allOrders);
        for(uint i=0;i<size;i++) {
                deleteOrder(getVectorOrder(This->allOrders, i));
        }
        deleteVectorOrder(This->allOrders);
+       
        size=getSizeVectorFunction(This->allFunctions);
        for(uint i=0;i<size;i++) {
                deleteFunction(getVectorFunction(This->allFunctions, i));
@@ -134,15 +139,19 @@ Function * completeTable(CSolver *solver, Table * table) {
 }
 
 Element * applyFunction(CSolver *solver, Function * function, Element ** array, uint numArrays, Boolean * overflowstatus) {
-       return NULL;
+    Element* element= allocElementFunction(function,array,numArrays,overflowstatus);
+    pushVectorElement(solver->allElements, element);
+    return element;
 }
 
 Boolean * applyPredicate(CSolver *solver, Predicate * predicate, Element ** inputs, uint numInputs) {
-       return NULL;
+    Boolean* boolean= allocBooleanPredicate(predicate, inputs, numInputs);
+    pushVectorBoolean(solver->allBooleans, boolean);
+    return boolean;
 }
 
-Boolean * applyLogicalOperation(CSolver *solver, LogicOp op, Boolean ** array) {
-       return NULL;
+Boolean * applyLogicalOperation(CSolver *solver, LogicOp op, Boolean ** array, uint asize) {
+    return allocBooleanLogicArray(solver, op, array, asize);
 }
 
 void addBoolean(CSolver *This, Boolean * constraint) {