/** 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;
};
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);
/** This function applies a logical operation to the Booleans in its input. */
-Boolean * applyLogicalOperation(CSolver *, 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 */
/** 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