remove redundant domains
[satune.git] / src / ASTTransform / elementopt.cc
index 162661b1d69c662470f2e28ae22627f3618dce2e..5fa38e6684cf2baf772e2440654df485575f7263 100755 (executable)
@@ -2,6 +2,9 @@
 #include "csolver.h"
 #include "tunable.h"
 #include "iterator.h"
+#include "boolean.h"
+#include "element.h"
+#include "predicate.h"
 
 ElementOpt::ElementOpt(CSolver *_solver)
        : Transform(_solver)
@@ -18,5 +21,31 @@ void ElementOpt::doTransform() {
        BooleanIterator bit(solver);
        while (bit.hasNext()) {
                Boolean *b = bit.next();
+               if (b->type == PREDICATEOP)
+                       processPredicate((BooleanPredicate *)b);
+       }
+}
+
+void ElementOpt::processPredicate(BooleanPredicate * pred) {
+       uint numInputs = pred->inputs.getSize();
+       if (numInputs != 2)
+               return;
+
+       Predicate * p = pred->getPredicate();
+       if (p->type == TABLEPRED)
+                       return;
+
+       PredicateOperator * pop = (PredicateOperator *) p;
+       CompOp op = pop->getOp();
+
+       Element * left = pred->inputs.get(0);
+       Element * right = pred->inputs.get(1);
+
+       if (left->type == ELEMCONST) {
+
+       } else if (right->type == ELEMCONST) {
+
+       } else {
+               return;
        }
 }