IR
[repair.git] / Repair / RepairCompiler / MCC / IR / ComparisonPredicate.java
diff --git a/Repair/RepairCompiler/MCC/IR/ComparisonPredicate.java b/Repair/RepairCompiler/MCC/IR/ComparisonPredicate.java
new file mode 100755 (executable)
index 0000000..1e28b63
--- /dev/null
@@ -0,0 +1,51 @@
+package MCC.IR;
+
+import java.util.*;
+
+public class ComparisonPredicate extends Predicate {
+
+    public static final Comparison GT = new Comparison("GT");
+    public static final Comparison GE = new Comparison("GE");
+    public static final Comparison LT = new Comparison("LT");
+    public static final Comparison LE = new Comparison("LE");
+    public static final Comparison EQ = new Comparison("EQ");
+    private static final Comparison ALL[] = { GT, GE, LT, LE, EQ };               
+    
+    public static class Comparison {
+        private final String name;
+        private Comparison(String name) { this.name = name; }
+        public String toString() { return name; }
+        public static Comparison fromString(String name) {
+            if (name == null) {
+                throw new NullPointerException();
+            }
+
+            for (int i = 0; i < ALL.length; i++) {
+                if (name.equalsIgnoreCase(ALL[i].toString())) {
+                    return ALL[i];
+                }
+            }
+
+            throw new IllegalArgumentException("Input not a valid comparison.");
+        }                
+    }
+    
+    Comparison comparison;
+    Expr left, right;
+
+    public ComparisonPredicate(String comparison, Expr left, Expr right) {
+        this.comparison = Comparison.fromString(comparison);
+        this.left = left;
+        this.right = right;
+    }
+
+    public Set getRequiredDescriptors() {
+        assert left != null;
+        assert right != null;
+        Set v = left.getRequiredDescriptors();
+        v.addAll(right.getRequiredDescriptors());
+        return v;
+    }
+            
+}
+