Adding IntegerEncodingResolver ...
[satune.git] / src / Translator / integerencorderresolver.cc
1
2 /* 
3  * File:   integerencorderresolver.cpp
4  * Author: hamed
5  * 
6  * Created on September 1, 2017, 4:58 PM
7  */
8
9 #include "integerencorderresolver.h"
10 #include "integerencodingrecord.h"
11 #include "sattranslator.h"
12
13 IntegerEncOrderResolver::IntegerEncOrderResolver(CSolver* _solver, IntegerEncodingRecord* _ierecord):
14         solver(_solver),
15         ierecord(_ierecord)
16 {
17 }
18
19 IntegerEncOrderResolver::~IntegerEncOrderResolver() {
20 }
21
22
23 HappenedBefore IntegerEncOrderResolver::resolveOrder(uint64_t first, uint64_t second){
24         Element* elem1 = ierecord->getOrderIntegerElement(solver, first, false);
25         if(elem1 == NULL)
26                 return SATC_UNORDERED;
27         Element* elem2 = ierecord->getOrderIntegerElement(solver, second, false);
28         if(elem2 == NULL)
29                 return SATC_UNORDERED;
30         
31         uint64_t val1 = getElementValueSATTranslator(solver, elem1);
32         uint64_t val2 = getElementValueSATTranslator(solver, elem2);
33         return val1 < val2? SATC_FIRST : val1> val2? SATC_SECOND: SATC_UNORDERED;
34 }