f8690d73e53aef5c8cda6aecdd25a728c04a9833
[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         elementTable = new HashsetOrderElement();
16 }
17
18 IntegerEncodingRecord::~IntegerEncodingRecord() {
19         if (elementTable != NULL) {
20                 delete elementTable;
21         }
22 }
23
24 Element *IntegerEncodingRecord::getOrderIntegerElement(CSolver *This, uint64_t item, bool create) {
25         OrderElement oelement(item, NULL);
26         if ( elementTable->contains(&oelement)) {
27                 return elementTable->get(&oelement)->getElement();
28         } else if (create) {
29                 Element *elem = This->getElementVar(secondarySet);
30                 elementTable->add(new OrderElement(item, elem));
31                 return elem;
32         }
33         return NULL;
34 }
35