#include "orderelement.h"
IntegerEncodingRecord::IntegerEncodingRecord(Set* _set):
- set(_set)
+ secondarySet(_set)
{
elementTable = new HashsetOrderElement();
}
}
}
-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;
}