IR
[repair.git] / Repair / RepairCompiler / MCC / IR / ComparisonPredicate.java
1 package MCC.IR;
2
3 import java.util.*;
4
5 public class ComparisonPredicate extends Predicate {
6
7     public static final Comparison GT = new Comparison("GT");
8     public static final Comparison GE = new Comparison("GE");
9     public static final Comparison LT = new Comparison("LT");
10     public static final Comparison LE = new Comparison("LE");
11     public static final Comparison EQ = new Comparison("EQ");
12     private static final Comparison ALL[] = { GT, GE, LT, LE, EQ };               
13     
14     public static class Comparison {
15         private final String name;
16         private Comparison(String name) { this.name = name; }
17         public String toString() { return name; }
18         public static Comparison fromString(String name) {
19             if (name == null) {
20                 throw new NullPointerException();
21             }
22
23             for (int i = 0; i < ALL.length; i++) {
24                 if (name.equalsIgnoreCase(ALL[i].toString())) {
25                     return ALL[i];
26                 }
27             }
28
29             throw new IllegalArgumentException("Input not a valid comparison.");
30         }                
31     }
32     
33     Comparison comparison;
34     Expr left, right;
35
36     public ComparisonPredicate(String comparison, Expr left, Expr right) {
37         this.comparison = Comparison.fromString(comparison);
38         this.left = left;
39         this.right = right;
40     }
41
42     public Set getRequiredDescriptors() {
43         assert left != null;
44         assert right != null;
45         Set v = left.getRequiredDescriptors();
46         v.addAll(right.getRequiredDescriptors());
47         return v;
48     }
49             
50 }
51