a1f6005f7736a5f62bb8ca046216e80688a7f39e
[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         void constrainVarWithConst(BooleanPredicate *pred, ElementSet *var, ElementConst *value);
19
20         Vector<BooleanPredicate *> workList;
21         bool updateSets;
22 };
23
24 #endif