import org.simantics.scl.compiler.elaboration.chr.planning.QueryPlanningContext;
import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;
import org.simantics.scl.compiler.elaboration.contexts.SimplificationContext;
import org.simantics.scl.compiler.elaboration.chr.planning.QueryPlanningContext;
import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;
import org.simantics.scl.compiler.elaboration.contexts.SimplificationContext;
public CHRRule(long location, CHRQuery head, CHRQuery body, Variable[] existentialVariables) {
this.location = location;
this.head = head;
public CHRRule(long location, CHRQuery head, CHRQuery body, Variable[] existentialVariables) {
this.location = location;
this.head = head;
Variable activeFact = new Variable("activeFact", constraint.factType);
QueryPlanningContext context = new QueryPlanningContext(compilationContext, existentialVariables);
Variable activeFact = new Variable("activeFact", constraint.factType);
QueryPlanningContext context = new QueryPlanningContext(compilationContext, existentialVariables);
- if(!head.createQueryPlan(context, new EVariable(activeFact), i))
+ if(!head.createQueryPlan(context, new EVariable(activeFact), i, initConstraint))
Variable activeFact = new Variable("activeFact", initConstraint.factType);
QueryPlanningContext context = new QueryPlanningContext(compilationContext, existentialVariables);
Variable activeFact = new Variable("activeFact", initConstraint.factType);
QueryPlanningContext context = new QueryPlanningContext(compilationContext, existentialVariables);
- if(!head.createQueryPlan(context, null, -1))
+ if(!head.createQueryPlan(context, new EVariable(activeFact), -1, initConstraint))
return;
body.createEnforcePlan(context, priority);
/*System.out.println(this);
for(PlanOp planOp : context.getPlanOps())
System.out.println(" " + planOp);*/
return;
body.createEnforcePlan(context, priority);
/*System.out.println(this);
for(PlanOp planOp : context.getPlanOps())
System.out.println(" " + planOp);*/
public String toString() {
StringBuilder b = new StringBuilder();
ExpressionToStringVisitor visitor = new ExpressionToStringVisitor(b);
public String toString() {
StringBuilder b = new StringBuilder();
ExpressionToStringVisitor visitor = new ExpressionToStringVisitor(b);