X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2Fcsolver.h;h=bd90bf3054a5cbf85e4b506097391c2786e51d7d;hp=aedef9391ea27c586b5b838e38c1cbf21611cb5a;hb=35aee732d08ff2b6de1952ff6fda447eefe47683;hpb=c393a0d9d17a8bae36b2635544db57fc919db906 diff --git a/src/csolver.h b/src/csolver.h index aedef93..bd90bf3 100644 --- a/src/csolver.h +++ b/src/csolver.h @@ -16,14 +16,28 @@ struct CSolver { /** This is a vector of all element structs that we have allocated. */ VectorElement * allElements; + + /** This is a vector of all predicate structs that we have allocated. */ VectorPredicate * allPredicates; + + /** This is a vector of all table structs that we have allocated. */ VectorTable * allTables; + + /** This is a vector of all order structs that we have allocated. */ + VectorOrder * allOrders; + + /** This is a vector of all function structs that we have allocated. */ + VectorFunction* allFunctions; }; /** Create a new solver instance. */ CSolver * allocCSolver(); +/** Delete solver instance. */ + +void deleteSolver(CSolver * This); + /** This function creates a set containing the elements passed in the array. */ Set * createSet(CSolver *, VarType type, uint64_t * elements, uint num); @@ -61,7 +75,7 @@ Function * createFunctionOperator(CSolver *solver, ArithOp op, Set ** domain, ui /** This function creates a predicate operator. */ -Predicate * createPredicateOperator(CSolver *solver, enum CompOp op, Set ** domain, uint numDomain); +Predicate * createPredicateOperator(CSolver *solver, CompOp op, Set ** domain, uint numDomain); /** This function creates an empty instance table.*/ @@ -77,15 +91,15 @@ Function * completeTable(CSolver *, Table *); /** This function applies a function to the Elements in its input. */ -Element * applyFunction(CSolver *, Function * function, Element ** array, Boolean * overflowstatus); +Element * applyFunction(CSolver *, Function * function, Element ** array, uint numArrays, Boolean * overflowstatus); /** This function applies a predicate to the Elements in its input. */ -Boolean * applyPredicate(CSolver *, Predicate * predicate, Element ** inputs); +Boolean * applyPredicate(CSolver *, Predicate * predicate, Element ** inputs, uint numInputs); /** This function applies a logical operation to the Booleans in its input. */ -Boolean * applyLogicalOperation(CSolver *, enum LogicOp op, Boolean ** array); +Boolean * applyLogicalOperation(CSolver *, LogicOp op, Boolean ** array, uint asize); /** This function adds a boolean constraint to the set of constraints to be satisfied */ @@ -93,8 +107,11 @@ Boolean * applyLogicalOperation(CSolver *, enum LogicOp op, Boolean ** array); void addBoolean(CSolver *, Boolean * constraint); /** This function instantiates an order of type type over the set set. */ -Order * createOrder(CSolver *, enum OrderType type, Set * set); +Order * createOrder(CSolver *, OrderType type, Set * set); /** This function instantiates a boolean on two items in an order. */ Boolean * orderConstraint(CSolver *, Order * order, uint64_t first, uint64_t second); + +/** When everything is done, the client calls this function and then csolver starts to encode*/ +void startEncoding(CSolver*); #endif