-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwolevalfactory.h
More file actions
57 lines (43 loc) · 2.3 KB
/
wolevalfactory.h
File metadata and controls
57 lines (43 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef WOLEVALFACTORY_H_INCLUDED
#define WOLEVALFACTORY_H_INCLUDED
#include<iostream>
namespace wolver
{
using namespace std;
class WolValue;
class WolMgr;
class WolEvalFactory {
public :
WolEvalFactory() {}
virtual ~WolEvalFactory() {}
public : //methods
virtual WolValueSptr evalAnd(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalBeq(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalAdd(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalMul(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalUlt(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalSll(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalSrl(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalUdiv(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalUrem(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalConcat(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalSplice(WolValueSptr val, int upper, int lower) = 0;
virtual WolValueSptr evalUnion(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalIntersection(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalDiff(WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalCompliment(WolValueSptr val) = 0;
virtual WolValueSptr evalCond(WolValueSptr cond, WolValueSptr val1, WolValueSptr val2) = 0;
virtual WolValueSptr evalUltB(WolValueSptr op_val, WolValueSptr operand_val, bool implyLeft) = 0;
virtual WolValueSptr evalAndB(WolValueSptr op_val, WolValueSptr operand_val) = 0;
virtual WolValueSptr evalBeqB(WolValueSptr op_val, WolValueSptr operand_val) = 0;
virtual WolValueSptr evalConcatB(WolValueSptr op_val, WolValueSptr operand_val, bool implyLeft) = 0;
virtual WolValueSptr evalSpliceB(WolValueSptr op_val, int upper, int lower, int width) = 0;
// position = 0 => backward implication for bool condition
// position = 1 => backward implication for if branch
// position = 2 => backward implication for else branch
virtual WolValueSptr evalCondB(WolValueSptr op_val, WolValueSptr operand_val1,
WolValueSptr operand_val2, int position) = 0;
private : //data
};
}
#endif