X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2Fcsolver.c;h=26a4be990b02b09edc0f9bf50f3741c2824b5a77;hp=0f971b12afb0979c7df7f8de61fd318463880c7b;hb=3abc4365ea744c8b2327aa5fdee3878867711ce1;hpb=b357df193c24d17d666c8303bd3fd78352c9212a diff --git a/src/csolver.c b/src/csolver.c index 0f971b1..26a4be9 100644 --- a/src/csolver.c +++ b/src/csolver.c @@ -9,8 +9,9 @@ CSolver * allocCSolver() { CSolver * tmp=(CSolver *) ourmalloc(sizeof(CSolver)); tmp->constraints=allocDefVectorBoolean(); - tmp->sets=allocDefVectorSet(); - tmp->elements=allocDefVectorElement(); + tmp->allBooleans=allocDefVectorBoolean(); + tmp->allSets=allocDefVectorSet(); + tmp->allElements=allocDefVectorElement(); return tmp; } @@ -18,37 +19,45 @@ CSolver * allocCSolver() { void deleteSolver(CSolver *this) { deleteVectorBoolean(this->constraints); - uint size=getSizeVectorSet(this->sets); + + uint size=getSizeVectorBoolean(this->allBooleans); + for(uint i=0;iallBooleans, i)); + } + + deleteVectorBoolean(this->allBooleans); + + size=getSizeVectorSet(this->allSets); for(uint i=0;isets, i)); + deleteSet(getVectorSet(this->allSets, i)); } - deleteVectorSet(this->sets); + deleteVectorSet(this->allSets); - size=getSizeVectorElement(this->elements); + size=getSizeVectorElement(this->allElements); for(uint i=0;ielements, i)); + deleteElement(getVectorElement(this->allElements, i)); } - deleteVectorElement(this->elements); + deleteVectorElement(this->allElements); ourfree(this); } Set * createSet(CSolver * this, VarType type, uint64_t * elements, uint numelements) { Set * set=allocSet(type, elements, numelements); - pushVectorSet(this->sets, set); + pushVectorSet(this->allSets, set); return set; } Set * createRangeSet(CSolver * this, VarType type, uint64_t lowrange, uint64_t highrange) { Set * set=allocSetRange(type, lowrange, highrange); - pushVectorSet(this->sets, set); + pushVectorSet(this->allSets, set); return set; } MutableSet * createMutableSet(CSolver * this, VarType type) { MutableSet * set=allocMutableSet(type); - pushVectorSet(this->sets, set); + pushVectorSet(this->allSets, set); return set; } @@ -64,27 +73,22 @@ uint64_t createUniqueItem(CSolver *solver, MutableSet * set) { Element * getElementVar(CSolver *this, Set * set) { Element * element=allocElement(set); - pushVectorElement(this->elements, element); + pushVectorElement(this->allElements, element); return element; } Boolean * getBooleanVar(CSolver *solver, VarType type) { - Boolean* boolean= allocBoolean(type); - pushVectorBoolean(solver->constraints, boolean); - return boolean; + Boolean* boolean= allocBoolean(type); + pushVectorBoolean(solver->allBooleans, boolean); + return boolean; } -Function * createFunctionOperator(CSolver *solver, enum ArithOp op, Set ** domain, uint numDomain, Set * range, - enum OverFlowBehavior overflowbehavior, Boolean * overflowstatus) { +Function * createFunctionOperator(CSolver *solver, enum ArithOp op, Set ** domain, uint numDomain, Set * range, enum OverFlowBehavior overflowbehavior, Boolean * overflowstatus) { return NULL; } -//Function * createFunctionOperatorPure(CSolver *solver, enum ArithOp op) { -// return NULL; -//} - Predicate * createPredicateOperator(CSolver *solver, enum CompOp op, Set ** domain, uint numDomain) { - return allocPredicate(op, domain,numDomain); + return allocPredicate(op, domain,numDomain); } Table * createTable(CSolver *solver, Set **domains, uint numDomain, Set * range) { @@ -115,11 +119,11 @@ void addBoolean(CSolver *this, Boolean * constraint) { } Order * createOrder(CSolver *solver, enum OrderType type, Set * set) { - return allocOrder(type, set); + return allocOrder(type, set); } Boolean * orderConstraint(CSolver *solver, Order * order, uint64_t first, uint64_t second) { - Boolean* constraint = allocBooleanOrder(order, first, second); - pushVectorBoolean(solver->constraints,constraint); - return constraint; + Boolean* constraint = allocBooleanOrder(order, first, second); + pushVectorBoolean(solver->allBooleans,constraint); + return constraint; }