#include "csolver.h"
-#include "AST/set.h"
-#include "AST/mutableset.h"
-#include "AST/element.h"
-#include "AST/boolean.h"
-#include "AST/predicate.h"
-#include "AST/order.h"
+#include "set.h"
+#include "mutableset.h"
+#include "element.h"
+#include "boolean.h"
+#include "predicate.h"
+#include "order.h"
+#include "table.h"
CSolver * allocCSolver() {
CSolver * tmp=(CSolver *) ourmalloc(sizeof(CSolver));
tmp->allBooleans=allocDefVectorBoolean();
tmp->allSets=allocDefVectorSet();
tmp->allElements=allocDefVectorElement();
+ tmp->allPredicates = allocDefVectorPredicate();
+ tmp->allTables = allocDefVectorTable();
return tmp;
}
for(uint i=0;i<size;i++) {
deleteElement(getVectorElement(this->allElements, i));
}
-
+ //FIXME: Freeing alltables and allpredicates
deleteVectorElement(this->allElements);
ourfree(this);
}
return boolean;
}
-Function * createFunctionOperator(CSolver *solver, enum ArithOp op, Set ** domain, uint numDomain, Set * range,
- enum OverFlowBehavior overflowbehavior, Boolean * overflowstatus) {
+Function * createFunctionOperator(CSolver *solver, ArithOp op, Set ** domain, uint numDomain, Set * range,
+ OverFlowBehavior overflowbehavior) {
return NULL;
}
Predicate * createPredicateOperator(CSolver *solver, enum CompOp op, Set ** domain, uint numDomain) {
- return allocPredicate(op, domain,numDomain);
+ Predicate* predicate= allocPredicate(op, domain,numDomain);
+ pushVectorPredicate(solver->allPredicates, predicate);
+ return predicate;
}
Table * createTable(CSolver *solver, Set **domains, uint numDomain, Set * range) {
- return NULL;
+ Table* table= allocTable(domains,numDomain,range);
+ pushVectorTable(solver->allTables, table);
+ return table;
}
-void addTableEntry(CSolver *solver, uint64_t* inputs, uint inputSize, uint64_t result) {
+void addTableEntry(CSolver *solver, Table* table, uint64_t* inputs, uint inputSize, uint64_t result) {
+ addNewTableEntry(table,inputs, inputSize,result);
}
Function * completeTable(CSolver *solver, Table * table) {
return NULL;
}
-Element * applyFunction(CSolver *solver, Function * function, Element ** array) {
+Element * applyFunction(CSolver *solver, Function * function, Element ** array, Boolean * overflowstatus) {
return NULL;
}
return NULL;
}
-Boolean * applyLogicalOperation(CSolver *solver, enum LogicOp op, Boolean ** array) {
+Boolean * applyLogicalOperation(CSolver *solver, LogicOp op, Boolean ** array) {
return NULL;
}
pushVectorBoolean(this->constraints, constraint);
}
-Order * createOrder(CSolver *solver, enum OrderType type, Set * set) {
+Order * createOrder(CSolver *solver, OrderType type, Set * set) {
return allocOrder(type, set);
}