980bb87b75b43423d9984890b316a7063567463b
[satune.git] / src / ASTTransform / elementopt.h
1 #ifndef ELEMENTOPT_H
2 #define ELEMENTOPT_H
3 #include "classlist.h"
4 #include "transform.h"
5
6 class ElementOpt : public Transform {
7 public:
8         ElementOpt(CSolver *_solver);
9         ~ElementOpt();
10         void doTransform();
11
12         CMEMALLOC;
13 private:
14         void processPredicate(BooleanPredicate *);
15         void handlePredicateEquals(BooleanPredicate *pred, ElementSet *left, ElementConst *right);
16         void handlePredicateInequality(BooleanPredicate *pred, ElementSet *left, ElementConst *right);
17         void replaceVarWithConst(BooleanPredicate * pred, ElementSet *var, ElementConst * value);
18         Vector<BooleanPredicate *> workList;
19 };
20
21 #endif