4 #define CCSOLVER(solver) ((CSolver *)solver)
6 void *createCCSolver() {
7 return (void *) new CSolver();
9 void deleteCCSolver(void *solver) {
10 delete CCSOLVER(solver);
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);
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);
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);
25 void *createMutableSet(void *solver,unsigned int type) {
26 return CCSOLVER(solver)->createMutableSet((VarType) type);
29 void addItem(void *solver,void *set, long element) {
30 CCSOLVER(solver)->addItem((MutableSet *) set, (uint64_t) element);
33 void finalizeMutableSet(void *solver,void *set) {
34 CCSOLVER(solver)->finalizeMutableSet((MutableSet *) set);
37 void *getElementVar(void *solver,void *set) {
38 return CCSOLVER(solver)->getElementVar((Set *) set);
41 void *getElementConst(void *solver,unsigned int type, long value) {
42 return CCSOLVER(solver)->getElementConst((VarType) type, (uint64_t) value);
45 void *getElementRange (void *solver,void *element) {
46 return CCSOLVER(solver)->getElementRange ((Element *) element);
49 void *getBooleanVar(void *solver,unsigned int type) {
50 return CCSOLVER(solver)->getBooleanVar((VarType) type).getRaw();
53 void *createFunctionOperator(void *solver,unsigned int op, void *range,unsigned int overflowbehavior) {
54 return CCSOLVER(solver)->createFunctionOperator((ArithOp) op, (Set *)range, (OverFlowBehavior) overflowbehavior);
57 void *createPredicateOperator(void *solver,unsigned int op) {
58 return CCSOLVER(solver)->createPredicateOperator((CompOp) op);
61 void *createPredicateTable(void *solver,void *table, unsigned int behavior) {
62 return CCSOLVER(solver)->createPredicateTable((Table *)table, (UndefinedBehavior) behavior);
65 void *createTable(void *solver, void *range) {
66 return CCSOLVER(solver)->createTable((Set *)range);
69 void *createTableForPredicate(void *solver) {
70 return CCSOLVER(solver)->createTableForPredicate();
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);
77 void *completeTable(void *solver,void *table, unsigned int behavior) {
78 return CCSOLVER(solver)->completeTable((Table *) table, (UndefinedBehavior) behavior);
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));
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();
89 void *applyPredicate(void *solver,void *predicate, void **inputs, unsigned int numInputs) {
90 return CCSOLVER(solver)->applyPredicate((Predicate *)predicate, (Element **)inputs, (uint) numInputs).getRaw();
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();
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();
101 void *applyLogicalOperationOne(void *solver,unsigned int op, void *arg) {
102 return CCSOLVER(solver)->applyLogicalOperation((LogicOp) op, BooleanEdge((Boolean *) arg)).getRaw();
105 void addConstraint(void *solver,void *constraint) {
106 CCSOLVER(solver)->addConstraint(BooleanEdge((Boolean *) constraint));
109 void *createOrder(void *solver,unsigned int type, void *set) {
110 return CCSOLVER(solver)->createOrder((OrderType) type, (Set *)set);
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();
117 int solve(void *solver) {
118 return CCSOLVER(solver)->solve();
121 long getElementValue(void *solver,void *element) {
122 return (long) CCSOLVER(solver)->getElementValue((Element *)element);
125 int getBooleanValue(void *solver, void *boolean) {
126 return CCSOLVER(solver)->getBooleanValue(BooleanEdge((Boolean *) boolean));
129 int getOrderConstraintValue(void *solver,void *order, long first, long second) {
130 return CCSOLVER(solver)->getOrderConstraintValue((Order *)order, (uint64_t) first, (uint64_t) second);
133 void printConstraints(void *solver) {
134 CCSOLVER(solver)->printConstraints();
139 void serialize(void *solver) {
140 CCSOLVER(solver)->serialize();
144 void mustHaveValue(void *solver, void *element) {
145 CCSOLVER(solver)->mustHaveValue( (Element *) element);
148 void setInterpreter(void *solver, unsigned int type){
149 CCSOLVER(solver)->setInterpreter((InterpreterType)type);
152 void *clone(void *solver) {
153 return CCSOLVER(solver)->clone();