c14a3e0cd5ee519ef6b268ddb2cbca6abe650c9f
[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 *createSet(void* solver,unsigned int type, void *elements, unsigned int num);
12 void *createRangeSet(void* solver,unsigned int type, long lowrange, long highrange);
13 void *createRangeVar(void* solver,unsigned type, long lowrange, long highrange);
14 void *createMutableSet(void* solver,unsigned type);
15 void addItem(void* solver,void *set, long element);
16 void finalizeMutableSet(void* solver,void *set);
17 void *getElementVar(void* solver,void *set);
18 void *getElementConst(void* solver,unsigned type, long value);
19 void *getElementRange (void* solver,void *element);
20 void* getBooleanVar(void* solver,unsigned int type);
21 void *createFunctionOperator(void* solver,unsigned int op, void *domain, unsigned int numDomain, void *range,unsigned int overflowbehavior);
22 void *createPredicateOperator(void* solver,unsigned int op, void *domain, unsigned int numDomain);
23 void *createPredicateTable(void* solver,void *table, unsigned int behavior);
24 void *createTable(void* solver,void*domains, unsigned int numDomain, void *range);
25 void *createTableForPredicate(void* solver,void*domains, unsigned int numDomain);
26 void addTableEntry(void* solver,void *table, void *inputs, unsigned int inputSize, long result);
27 void *completeTable(void* solver,void *table, unsigned int behavior);
28 void *applyFunction(void* solver,void *function, void*array, unsigned int numArrays, long overflowstatus);
29 void* applyPredicateTable(void* solver,void *predicate, void *inputs, unsigned int numInputs, long undefinedStatus);
30 void* applyPredicate(void* solver,void *predicate, void *inputs, unsigned int numInputs);
31 void* applyLogicalOperation(void* solver,unsigned int op, void *array, unsigned int asize);
32 void* applyLogicalOperationTwo(void* solver,unsigned int op, long arg1, long arg2);
33 void* applyLogicalOperationOne(void* solver,unsigned int op, long arg);
34 void addConstraint(void* solver,void* constraint);
35 void *createOrder(void* solver,unsigned int type, void *set);
36 void* orderConstraint(void* solver,void *order, long first, long second);
37 int solve(void* solver);
38 long getElementValue(void* solver,void *element);
39 int getBooleanValue(void* solver,long boolean);
40 int getOrderConstraintValue(void* solver,void *order, long first, long second);
41 void printConstraints(void* solver);
42 #ifdef __cplusplus
43 }
44 #endif
45
46 #endif