5 public class InclusionPredicate extends Predicate {
10 public boolean inverted() {
11 return setexpr.inverted();
15 public InclusionPredicate(Expr expr, SetExpr setexpr) {
17 throw new NullPointerException();
20 if (setexpr == null) {
21 throw new NullPointerException();
25 this.setexpr = setexpr;
28 public Set getRequiredDescriptors() {
29 Set v = expr.getRequiredDescriptors();
30 v.addAll(setexpr.getRequiredDescriptors());
34 public void generate(CodeWriter writer, VarDescriptor dest) {
35 VarDescriptor var = VarDescriptor.makeNew("exprval");
36 expr.generate(writer, var);
37 setexpr.generate_inclusion(writer, dest, var);
40 public Set getInversedRelations() {
42 throw new IRException("unsupported");
44 //Set set = setexpr.getInversedRelations();
45 //set.addAll(expr.getInversedRelations());
49 public Descriptor getDescriptor() {
50 if (setexpr instanceof ImageSetExpr) {
51 return ((ImageSetExpr)setexpr).getRelation();
56 public int[] getRepairs(boolean negated) {
57 if (setexpr instanceof ImageSetExpr) {
59 return new int[] {AbstractRepair.REMOVEFROMRELATION};
61 return new int[] {AbstractRepair.ADDTORELATION};
64 return new int[] {AbstractRepair.REMOVEFROMSET};
66 return new int[] {AbstractRepair.ADDTOSET};