import org.simantics.scl.compiler.compilation.CompilationContext;
import org.simantics.scl.compiler.constants.IntegerConstant;
import org.simantics.scl.compiler.constants.singletons.NullCheck;
+import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;
import org.simantics.scl.compiler.internal.codegen.continuations.ICont;
import org.simantics.scl.compiler.internal.codegen.references.IVal;
@Override
public void generateCode(CompilationContext context, PlanContext planContext, CodeWriter w) {
if(planContext.currentId != null) {
- w.apply(location, planContext.ruleset.writeCurrentId, planContext.storeVar, planContext.currentId);
+ w.apply(location, CHRRuleset.WRITE_CURRENT_ID, planContext.contextVar, planContext.currentId);
planContext.currentId = null;
- w.apply(location, planContext.ruleset.activateProcedure, planContext.storeVar, new IntegerConstant(priority));
+ w.apply(location, CHRRuleset.ACTIVATE, planContext.contextVar, new IntegerConstant(priority+planContext.ruleset.initialPriorityNumber));
}
for(PartnerFact activeFact : planContext.partnerFacts) {
if(activeFact.killAfterMatch) {
else {
CodeWriter iterateAlive = w.createBlock(activeFact.constraint.factType);
w.jump(iterateAlive.getContinuation(), w.apply(location, activeFact.nextFact, activeFact.factVar));
- iterateUntilLiveFactFound(iterateAlive, activeFact);
+ iterateUntilLiveFactFound(iterateAlive, activeFact);
}
break;
}