import org.simantics.scl.compiler.constants.singletons.ListElement;
import org.simantics.scl.compiler.constants.singletons.ListLength;
import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
+import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;
import org.simantics.scl.compiler.elaboration.expressions.Variable;
+import org.simantics.scl.compiler.elaboration.expressions.block.IncludeStatement;
import org.simantics.scl.compiler.elaboration.java.EqualsFunction;
import org.simantics.scl.compiler.internal.codegen.continuations.Branch;
import org.simantics.scl.compiler.internal.codegen.continuations.ICont;
public abstract class PlanContext {
public CompilationContext context;
public CHRRuleset ruleset;
- public IVal storeVar;
+ public IVal mainStoreVar;
public IVal contextVar;
public ArrayList<PartnerFact> partnerFacts = new ArrayList<PartnerFact>();
public IVal currentId;
- public PlanContext(CompilationContext context, CHRRuleset ruleset, IVal storeVar, IVal contextVar) {
+ public PlanContext(CompilationContext context, CHRRuleset ruleset, IVal mainStoreVar, IVal contextVar) {
this.context = context;
this.ruleset = ruleset;
- this.storeVar = storeVar;
+ this.mainStoreVar = mainStoreVar;
this.contextVar = contextVar;
}
w.continueAs(end);
}
+
+ public IVal getStoreVar(CHRConstraint constraint) {
+ IncludeStatement includeStatement = ruleset.constraintSourceMap.get(constraint);
+ if(includeStatement != null)
+ return includeStatement.storeVar;
+ else
+ return mainStoreVar;
+ }
}