*** empty log message ***
[repair.git] / Repair / RepairCompiler / MCC / IR / InclusionPredicate.java
index cbe703772393f9a38382b1e0024e61884e5ed62e..c27bb443333a892ea706e7df02a418671d873b5a 100755 (executable)
@@ -7,6 +7,14 @@ public class InclusionPredicate extends Predicate {
     Expr expr;
     SetExpr setexpr;
 
+    public boolean inverted() {
+       return setexpr.inverted();
+    }
+
+    public String name() {
+       return expr.name() + " in "+setexpr.name();
+    }
+    
     public InclusionPredicate(Expr expr, SetExpr setexpr) {
         if (expr == null) {
             throw new NullPointerException();
@@ -31,6 +39,36 @@ public class InclusionPredicate extends Predicate {
         expr.generate(writer, var);
         setexpr.generate_inclusion(writer, dest, var);
     }
-            
+
+    public Set getInversedRelations() {
+
+        throw new IRException("unsupported");
+
+        //Set set = setexpr.getInversedRelations();
+        //set.addAll(expr.getInversedRelations());
+        //return set;
+    }
+
+    public Descriptor getDescriptor() {
+       if (setexpr instanceof ImageSetExpr) {
+           return ((ImageSetExpr)setexpr).getRelation();
+       } else
+           return setexpr.sd;
+    }
+
+    public int[] getRepairs(boolean negated) {
+       if (setexpr instanceof ImageSetExpr) {
+           if (negated)
+               return new int[] {AbstractRepair.REMOVEFROMRELATION};
+           else
+               return new int[] {AbstractRepair.ADDTORELATION};
+       } else {
+           if (negated)
+               return new int[] {AbstractRepair.REMOVEFROMSET};
+           else
+               return new int[] {AbstractRepair.ADDTOSET};
+       }
+    }
 }
     
+