edits
[satune.git] / src / ccsolver.cc
1 #include "csolver.h"
2 #include "ccsolver.h"
3
4 #define CCSOLVER(solver) ((CSolver*)solver)
5
6 void* createCCSolver(){
7         return (void*) new CSolver();
8 }
9 void deleteCCSolver(void* solver){
10         delete CCSOLVER(solver);
11 }
12
13 void *createSet(void* solver,unsigned int type, long *elements, unsigned int num){
14         return CCSOLVER(solver)->createSet((VarType) type, (uint64_t *)elements, (uint) num);
15 }
16
17 void *createRangeSet(void* solver,unsigned int type, long lowrange, long highrange){
18         return CCSOLVER(solver)->createRangeSet((VarType) type, (uint64_t) lowrange, (uint64_t) highrange);
19 }
20
21 void *createRangeVar(void* solver,unsigned int type, long lowrange, long highrange){
22         return CCSOLVER(solver)->createRangeVar((VarType) type, (uint64_t) lowrange, (uint64_t) highrange);
23 }
24
25 void *createMutableSet(void* solver,unsigned int type){
26         return CCSOLVER(solver)->createMutableSet((VarType) type);
27 }
28
29 void addItem(void* solver,void *set, long element){
30         CCSOLVER(solver)->addItem((MutableSet*) set, (uint64_t) element);
31 }
32
33 void finalizeMutableSet(void* solver,void *set){
34         CCSOLVER(solver)->finalizeMutableSet((MutableSet*) set);
35 }
36
37 void *getElementVar(void* solver,void *set){
38         return CCSOLVER(solver)->getElementVar((Set*) set);
39 }
40
41 void *getElementConst(void* solver,unsigned int type, long value){
42         return CCSOLVER(solver)->getElementConst((VarType) type, (uint64_t) value);
43 }
44
45 void *getElementRange (void* solver,void *element){
46         return CCSOLVER(solver)->getElementRange ((Element*) element);
47 }
48
49 void* getBooleanVar(void* solver,unsigned int type){
50         return CCSOLVER(solver)->getBooleanVar((VarType) type).getRaw();
51 }
52
53 void *createFunctionOperator(void* solver,unsigned int op, void **domain, unsigned int numDomain, void *range,unsigned int overflowbehavior){
54         return CCSOLVER(solver)->createFunctionOperator((ArithOp) op, (Set **)domain, (uint) numDomain, (Set *)range, (OverFlowBehavior) overflowbehavior);
55 }
56
57 void *createPredicateOperator(void* solver,unsigned int op, void **domain, unsigned int numDomain){
58         return CCSOLVER(solver)->createPredicateOperator((CompOp) op, (Set **)domain, (uint) numDomain);
59 }
60
61 void *createPredicateTable(void* solver,void *table, unsigned int behavior){
62         return CCSOLVER(solver)->createPredicateTable((Table *)table, (UndefinedBehavior) behavior);
63 }
64
65 void *createTable(void* solver,void**domains, unsigned int numDomain, void *range){
66         return CCSOLVER(solver)->createTable((Set **)domains, (uint) numDomain, (Set *)range);
67 }
68
69 void *createTableForPredicate(void* solver,void**domains, unsigned int numDomain){
70         return CCSOLVER(solver)->createTableForPredicate((Set **)domains, (uint) numDomain);
71 }
72
73 void addTableEntry(void* solver,void *table, void *inputs, unsigned int inputSize, long result){
74         CCSOLVER(solver)->addTableEntry((Table *)table, (uint64_t *)inputs, (uint) inputSize, (uint64_t) result);
75 }
76
77 void *completeTable(void* solver,void *table, unsigned int behavior){
78         return CCSOLVER(solver)->completeTable((Table *) table, (UndefinedBehavior) behavior);
79 }
80
81 void *applyFunction(void* solver,void *function, void**array, unsigned int numArrays, void* overflowstatus){
82         return CCSOLVER(solver)->applyFunction((Function *)function, (Element **)array, (uint) numArrays, BooleanEdge ((Boolean*)overflowstatus));
83 }
84
85 void* applyPredicateTable(void* solver,void *predicate, void **inputs, unsigned int numInputs, void* undefinedStatus){
86         return CCSOLVER(solver)->applyPredicateTable((Predicate *)predicate, (Element **)inputs, (uint) numInputs, BooleanEdge((Boolean*) undefinedStatus)).getRaw();
87 }
88
89 void* applyPredicate(void* solver,void *predicate, void **inputs, unsigned int numInputs){
90         return CCSOLVER(solver)->applyPredicate((Predicate *)predicate, (Element **)inputs, (uint) numInputs).getRaw();
91 }
92
93 void* applyLogicalOperation(void* solver,unsigned int op, void *array, unsigned int asize){
94         return CCSOLVER(solver)->applyLogicalOperation((LogicOp) op, (BooleanEdge *)array, (uint) asize).getRaw();
95 }
96
97 void* applyLogicalOperationTwo(void* solver,unsigned int op, void* arg1, void* arg2){
98         return CCSOLVER(solver)->applyLogicalOperation((LogicOp) op, BooleanEdge((Boolean*) arg1), BooleanEdge((Boolean*) arg2)).getRaw();
99 }
100
101 void* applyLogicalOperationOne(void* solver,unsigned int op, void* arg){
102         return CCSOLVER(solver)->applyLogicalOperation((LogicOp) op, BooleanEdge((Boolean*) arg)).getRaw();
103 }
104
105 void addConstraint(void* solver,void* constraint){
106         CCSOLVER(solver)->addConstraint(BooleanEdge((Boolean*) constraint));
107 }
108
109 void *createOrder(void* solver,unsigned int type, void *set){
110         return CCSOLVER(solver)->createOrder((OrderType) type, (Set *)set);
111 }
112
113 void* orderConstraint(void* solver,void *order, long first, long second){
114         return CCSOLVER(solver)->orderConstraint((Order *)order, (uint64_t) first, (uint64_t) second).getRaw();
115 }
116
117 int solve(void* solver){
118         return CCSOLVER(solver)->solve();
119 }
120
121 long getElementValue(void* solver,void *element){
122         return (long) CCSOLVER(solver)->getElementValue((Element *)element);
123 }
124
125 int getBooleanValue(void* solver, void* boolean){
126         return CCSOLVER(solver)->getBooleanValue(BooleanEdge((Boolean*) boolean));
127 }
128
129 int getOrderConstraintValue(void* solver,void *order, long first, long second){
130         return CCSOLVER(solver)->getOrderConstraintValue((Order *)order, (uint64_t) first, (uint64_t) second);
131 }
132
133 void printConstraints(void* solver){
134         CCSOLVER(solver)->printConstraints();
135 }
136
137
138
139 void serialize(void* solver){
140         CCSOLVER(solver)->serialize();
141 }