*** empty log message ***
[repair.git] / Repair / RepairCompiler / MCC / IR / TupleOfExpr.java
index a726e044ba44901e497300782d9f6b2235075928..941b37a8f22b7ac2c2b168b15f1206fabd11a152 100755 (executable)
@@ -8,6 +8,16 @@ public class TupleOfExpr extends Expr {
     Expr right = null;
     RelationDescriptor relation = null;
 
+    public Set freeVars() {
+       Set lset=left.freeVars();
+       Set rset=right.freeVars();
+       if (lset==null)
+           return rset;
+       if (rset!=null)
+           lset.addAll(rset);
+       return lset;
+    }
+
     public TupleOfExpr(Expr left, Expr right, RelationDescriptor relation) {
         if ((left == null) || (right == null) || (relation == null)) {
             throw new NullPointerException();
@@ -18,6 +28,30 @@ public class TupleOfExpr extends Expr {
         this.relation = relation;
     }
 
+    public String name() {
+       return "<"+left.name()+","+right.name()+"> in "+relation.toString();
+    }
+
+    public boolean usesDescriptor(Descriptor d) {
+       if (d==relation)
+           return true;
+       else
+           return left.usesDescriptor(d)||right.usesDescriptor(d);
+    }
+
+    public boolean equals(Map remap, Expr e) {
+       if (e==null||!(e instanceof TupleOfExpr))
+           return false;
+       TupleOfExpr toe=(TupleOfExpr)e;
+       if (!left.equals(remap,toe.left))
+           return false;
+       if (!right.equals(remap,toe.right))
+           return false;
+       if (relation!=toe.relation)
+           return false;
+       return true;
+    }
+
     public Set getRequiredDescriptors() {
         Set v = left.getRequiredDescriptors();
         v.addAll(right.getRequiredDescriptors());