package org.simantics.scl.compiler.elaboration.chr.plan; import org.simantics.scl.compiler.compilation.CompilationContext; import org.simantics.scl.compiler.elaboration.expressions.Expression; import org.simantics.scl.compiler.elaboration.expressions.Variable; import org.simantics.scl.compiler.internal.codegen.references.IVal; import org.simantics.scl.compiler.internal.codegen.writer.CodeWriter; public class IterateListOp extends PlanOp { public Variable variable; public Expression list; public IterateListOp(long location, Variable variable, Expression list) { super(location); this.variable = variable; this.list = list; } @Override public void toString(StringBuilder b) { b.append("ITERATE ").append(variable).append(" <- ").append(list); } @Override public void generateCode(CompilationContext context, PlanContext planContext, CodeWriter w) { IVal listValue = list.toVal(context.environment, w); planContext.iterateList(location, w, variable, listValue); } }