X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FASTTransform%2Fintegerencoding.cc;h=621d2a8c927ee9d10d81315c7dab1f25192d1879;hp=2a7b9012f74eae6272ef4a97d23545060028a67a;hb=73e6a63d0683c953722370f12a420ada87ed81a7;hpb=cbd921ee35b6a29934fd7cecccde7f160228af17 diff --git a/src/ASTTransform/integerencoding.cc b/src/ASTTransform/integerencoding.cc index 2a7b901..621d2a8 100644 --- a/src/ASTTransform/integerencoding.cc +++ b/src/ASTTransform/integerencoding.cc @@ -17,14 +17,16 @@ IntegerEncodingTransform::~IntegerEncodingTransform() { } 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(); - 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; @@ -33,11 +35,13 @@ void IntegerEncodingTransform::doTransform() { 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 ); - uint size = currOrder->constraints.getSize(); + + Vector *constraints = currOrder->getConstraints(); + uint size = constraints->getSize(); 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);