bug fix
[satune.git] / src / ASTTransform / integerencoding.cc
index 2a7b9012f74eae6272ef4a97d23545060028a67a..621d2a8c927ee9d10d81315c7dab1f25192d1879 100644 (file)
@@ -17,14 +17,16 @@ IntegerEncodingTransform::~IntegerEncodingTransform() {
 }
 
 void IntegerEncodingTransform::doTransform() {
 }
 
 void IntegerEncodingTransform::doTransform() {
-       if(solver->isUnSAT()){
+       if (solver->isUnSAT()) {
                return;
        }
        HashsetOrder *orders = solver->getActiveOrders()->copy();
        SetIteratorOrder *orderit = orders->iterator();
        while (orderit->hasNext()) {
                Order *order = orderit->next();
                return;
        }
        HashsetOrder *orders = solver->getActiveOrders()->copy();
        SetIteratorOrder *orderit = orders->iterator();
        while (orderit->hasNext()) {
                Order *order = orderit->next();
-               if (GETVARTUNABLE(solver->getTuner(), order->type, ORDERINTEGERENCODING, &offon))
+               if (order->type == SATC_PARTIAL)
+                 continue;
+               if (GETVARTUNABLE(solver->getTuner(), order->set->type, ORDERINTEGERENCODING, &offon))
                        integerEncode(order);
        }
        delete orders;
                        integerEncode(order);
        }
        delete orders;
@@ -33,11 +35,13 @@ void IntegerEncodingTransform::doTransform() {
 
 void IntegerEncodingTransform::integerEncode(Order *currOrder) {
        IntegerEncodingRecord *encodingRecord =  new IntegerEncodingRecord(
 
 void IntegerEncodingTransform::integerEncode(Order *currOrder) {
        IntegerEncodingRecord *encodingRecord =  new IntegerEncodingRecord(
-               solver->createRangeSet(currOrder->set->getType(), 0, (uint64_t) currOrder->set->getSize() - 1));
+               solver->createRangeSet(currOrder->set->getType(), 0, (uint64_t) currOrder->getNumUsed() - 1));
        currOrder->setOrderEncodingType( INTEGERENCODING );
        currOrder->setOrderEncodingType( INTEGERENCODING );
-       uint size = currOrder->constraints.getSize();
+
+       Vector<BooleanOrder *> *constraints = currOrder->getConstraints();
+       uint size = constraints->getSize();
        for (uint i = 0; i < size; i++) {
        for (uint i = 0; i < size; i++) {
-               orderIntegerEncodingSATEncoder(currOrder->constraints.get(i), encodingRecord);
+               orderIntegerEncodingSATEncoder(constraints->get(i), encodingRecord);
        }
        currOrder->setOrderResolver(new IntegerEncOrderResolver(solver, encodingRecord));
        solver->getActiveOrders()->remove(currOrder);
        }
        currOrder->setOrderResolver(new IntegerEncOrderResolver(solver, encodingRecord));
        solver->getActiveOrders()->remove(currOrder);