Adding IntegerEncodingResolver ...
[satune.git] / src / ASTTransform / integerencodingrecord.cc
index 6589df76df30f22a3e4cc80cbcdbe8d79cbcd863..abd763fe7db988e9ebf35b95d8cd14ade955da92 100644 (file)
@@ -10,7 +10,7 @@
 #include "orderelement.h"
 
 IntegerEncodingRecord::IntegerEncodingRecord(Set* _set):
-       set(_set)
+       secondarySet(_set)
 {
        elementTable = new HashsetOrderElement();
 }
@@ -21,13 +21,15 @@ IntegerEncodingRecord::~IntegerEncodingRecord(){
        }
 }
 
-Element * IntegerEncodingRecord::getOrderIntegerElement(CSolver *This, uint64_t item) {
+Element * IntegerEncodingRecord::getOrderIntegerElement(CSolver *This, uint64_t item, bool create) {
        OrderElement oelement(item, NULL);
-       if ( !elementTable->contains(&oelement)) {
-               Element *elem = This->getElementVar(set);
+       if ( elementTable->contains(&oelement)) {
+               return elementTable->get(&oelement)->getElement();
+       } else if (create) {
+               Element *elem = This->getElementVar(secondarySet);
                elementTable->add(new OrderElement(item, elem));
                return elem;
-       } else
-               return elementTable->get(&oelement)->elem;
+       }
+       return NULL;
 }