5 public class InclusionPredicate extends Predicate {
10 public InclusionPredicate(Expr expr, SetExpr setexpr) {
12 throw new NullPointerException();
15 if (setexpr == null) {
16 throw new NullPointerException();
20 this.setexpr = setexpr;
23 public Set getRequiredDescriptors() {
24 Set v = expr.getRequiredDescriptors();
25 v.addAll(setexpr.getRequiredDescriptors());
29 public void generate(CodeWriter writer, VarDescriptor dest) {
30 VarDescriptor var = VarDescriptor.makeNew("exprval");
31 expr.generate(writer, var);
32 setexpr.generate_inclusion(writer, dest, var);
35 public Set getInversedRelations() {
37 throw new IRException("unsupported");
39 //Set set = setexpr.getInversedRelations();
40 //set.addAll(expr.getInversedRelations());
44 public int[] getRepairs(boolean negated) {
45 if (setexpr instanceof ImageSetExpr) {
47 return new int[] {AbstractRepair.REMOVEFROMRELATION};
49 return new int[] {AbstractRepair.ADDTORELATION};
52 return new int[] {AbstractRepair.REMOVEFROMSET};
54 return new int[] {AbstractRepair.ADDTOSET};