Edit
[satune.git] / src / ASTTransform / integerencodingrecord.cc
1 /*
2  * File:   integerencodingrecord.cpp
3  * Author: hamed
4  *
5  * Created on August 26, 2017, 6:19 PM
6  */
7
8 #include "integerencodingrecord.h"
9 #include "csolver.h"
10 #include "orderelement.h"
11
12 IntegerEncodingRecord::IntegerEncodingRecord(Set *_set) :
13         secondarySet(_set)
14 {
15         elementSet = new HashsetOrderElement();
16 }
17
18 IntegerEncodingRecord::~IntegerEncodingRecord() {
19         SetIteratorOrderElement *oiterator = elementSet->iterator();
20         while (oiterator->hasNext()) {
21                 OrderElement *oe = oiterator->next();
22                 delete oe;
23         }
24         delete oiterator;
25         delete elementSet;
26 }
27
28 Element *IntegerEncodingRecord::getOrderIntegerElement(CSolver *This, uint64_t item, bool create) {
29         OrderElement oelement(item, NULL);
30         if ( elementSet->contains(&oelement)) {
31                 return elementSet->get(&oelement)->getElement();
32         } else if (create) {
33                 Element *elem = This->getElementVar(secondarySet);
34                 elementSet->add(new OrderElement(item, elem));
35                 return elem;
36         }
37         return NULL;
38 }
39