-/*
+/*
* File: integerencodingrecord.cpp
* Author: hamed
- *
+ *
* Created on August 26, 2017, 6:19 PM
*/
#include "csolver.h"
#include "orderelement.h"
-IntegerEncodingRecord::IntegerEncodingRecord(Set* _set):
+IntegerEncodingRecord::IntegerEncodingRecord(Set *_set) :
secondarySet(_set)
{
- elementTable = new HashsetOrderElement();
+ elementSet = new HashsetOrderElement();
}
-IntegerEncodingRecord::~IntegerEncodingRecord(){
- if (elementTable != NULL) {
- delete elementTable;
+IntegerEncodingRecord::~IntegerEncodingRecord() {
+ SetIteratorOrderElement *oiterator = elementSet->iterator();
+ while (oiterator->hasNext()) {
+ OrderElement *oe = oiterator->next();
+ delete oe;
}
+ delete oiterator;
+ delete elementSet;
}
-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)) {
+ if ( elementSet->contains(&oelement)) {
+ return elementSet->get(&oelement)->getElement();
+ } else if (create) {
Element *elem = This->getElementVar(secondarySet);
- elementTable->add(new OrderElement(item, elem));
+ elementSet->add(new OrderElement(item, elem));
return elem;
- } else
- return elementTable->get(&oelement)->getElement();
+ }
+ return NULL;
}