#include <strings.h>
void naiveEncodingDecision(CSolver *This) {
- SetIteratorBoolean *iterator = This->getConstraints();
+ SetIteratorBooleanEdge *iterator = This->getConstraints();
while (iterator->hasNext()) {
- Boolean *boolean = iterator->next();
- naiveEncodingConstraint(boolean);
+ BooleanEdge b = iterator->next();
+ naiveEncodingConstraint(b.getBoolean());
}
delete iterator;
}
return;
}
case ORDERCONST: {
- ((BooleanOrder *) This)->order->setOrderEncodingType(PAIRWISE);
+ if (((BooleanOrder *) This)->order->encoding.type == ORDER_UNASSIGNED)
+ ((BooleanOrder *) This)->order->setOrderEncodingType(PAIRWISE);
return;
}
case LOGICOP: {
void naiveEncodingLogicOp(BooleanLogic *This) {
for (uint i = 0; i < This->inputs.getSize(); i++) {
- naiveEncodingConstraint(This->inputs.get(i));
+ naiveEncodingConstraint(This->inputs.get(i).getBoolean());
}
}
}
void naiveEncodingElement(Element *This) {
- ElementEncoding *encoding = getElementEncoding(This);
+ ElementEncoding *encoding = This->getElementEncoding();
if (encoding->getElementEncodingType() == ELEM_UNASSIGNED) {
+ if(This->type != ELEMCONST){
+ model_print("INFO: naive encoder is making the decision about element %p....\n", This);
+ }
encoding->setElementEncodingType(BINARYINDEX);
encoding->encodingArrayInitialization();
}
Element *element = function->inputs.get(i);
naiveEncodingElement(element);
}
- FunctionEncoding *encoding = getElementFunctionEncoding(function);
+ FunctionEncoding *encoding = function->getElementFunctionEncoding();
if (encoding->getFunctionEncodingType() == FUNC_UNASSIGNED)
- getElementFunctionEncoding(function)->setFunctionEncodingType(ENUMERATEIMPLICATIONS);
+ function->getElementFunctionEncoding()->setFunctionEncodingType(ENUMERATEIMPLICATIONS);
}
}