091303fb18540a420da62aaac0c8ad1f632489e3
[satune.git] / src / ccsolver.h
1 #ifndef __CCSOLVER_H
2 #define __CCSOLVER_H
3
4
5 typedef void *CCSolver;
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 void *createCCSolver();
10 void deleteCCSolver(void *solver);
11 void resetCCSolver(void *solver);
12 void *createSet(void *solver,unsigned int type, long *elements, unsigned int num);
13 void *createRangeSet(void *solver,unsigned int type, long lowrange, long highrange);
14 void *createRangeVar(void *solver,unsigned int type, long lowrange, long highrange);
15 void *createMutableSet(void *solver,unsigned int type);
16 void addItem(void *solver,void *set, long element);
17 void finalizeMutableSet(void *solver,void *set);
18 void *getElementVar(void *solver,void *set);
19 void *getElementConst(void *solver,unsigned int type, long value);
20 void *getElementRange (void *solver,void *element);
21 void *getBooleanVar(void *solver,unsigned int type);
22 void *getBooleanTrue(void *solver);
23 void *getBooleanFalse(void *solver);
24 void *createFunctionOperator(void *solver,unsigned int op, void *range,unsigned int overflowbehavior);
25 void *createPredicateOperator(void *solver,unsigned int op);
26 void *createPredicateTable(void *solver,void *table, unsigned int behavior);
27 void *createTable(void *solver, void *range);
28 void *createTableForPredicate(void *solver);
29 void addTableEntry(void *solver,void *table, void *inputs, unsigned int inputSize, long result);
30 void *completeTable(void *solver,void *table, unsigned int behavior);
31 void *applyFunction(void *solver,void *function, void **array, unsigned int numArrays, void *overflowstatus);
32 void *applyPredicateTable(void *solver,void *predicate, void **inputs, unsigned int numInputs, void *undefinedStatus);
33 void *applyPredicate(void *solver,void *predicate, void **inputs, unsigned int numInputs);
34 void *applyLogicalOperation(void *solver,unsigned int op, void **array, unsigned int asize);
35 void *applyExactlyOneConstraint(void *solver,void **array, unsigned int asize);
36 void *applyLogicalOperationTwo(void *solver,unsigned int op, void *arg1, void *arg2);
37 void *applyLogicalOperationOne(void *solver,unsigned int op, void *arg);
38 void addConstraint(void *solver,void *constraint);
39 void printConstraint(void *solver,void *constraint);
40 void *createOrder(void *solver,unsigned int type, void *set);
41 void *orderConstraint(void *solver,void *order, long first, long second);
42 int solve(void *solver);
43 int solveIncremental(void *solver);
44 long getElementValue(void *solver,void *element);
45 void freezeElement(void *solver,void *element);
46 int getBooleanValue(void *solver,void *boolean);
47 int getOrderConstraintValue(void *solver,void *order, long first, long second);
48 void printConstraints(void *solver);
49 void serialize(void *solver);
50 void mustHaveValue(void *solver, void *element);
51 void setInterpreter(void *solver, unsigned int type);
52 void *clone(void *solver);
53 #ifdef __cplusplus
54 }
55 #endif
56
57 #endif