-package org.simantics.scl.compiler.elaboration.chr.plan;\r
-\r
-import org.simantics.scl.compiler.compilation.CompilationContext;\r
-import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;\r
-import org.simantics.scl.compiler.elaboration.expressions.Expression;\r
-import org.simantics.scl.compiler.internal.codegen.references.IVal;\r
-import org.simantics.scl.compiler.internal.codegen.writer.CodeWriter;\r
-\r
-public class ClaimOp extends PlanOp {\r
-\r
- CHRConstraint constraint;\r
- Expression[] parameters;\r
-\r
- public ClaimOp(long location, CHRConstraint constraint, Expression[] parameters) {\r
- super(location);\r
- this.constraint = constraint;\r
- this.parameters = parameters;\r
- }\r
-\r
- @Override\r
- public void toString(StringBuilder b) {\r
- b.append("CLAIM ").append(constraint);\r
- for (Expression parameter : parameters)\r
- b.append(" (").append(parameter).append(')');\r
- }\r
-\r
- @Override\r
- public void generateCode(CompilationContext context, PlanContext planContext, CodeWriter w) {\r
- IVal[] parameterVars = new IVal[parameters.length+1];\r
- parameterVars[0] = planContext.generateNewId(location, w);\r
- for(int i=0;i<parameters.length;++i)\r
- parameterVars[i+1] = parameters[i].toVal(context.environment, w);\r
- IVal newFact = w.apply(location, constraint.constructor, parameterVars);\r
- w.apply(location, constraint.addProcedure, planContext.storeVar, newFact);\r
- planContext.nextOp(w);\r
- }\r
-\r
-}\r
+package org.simantics.scl.compiler.elaboration.chr.plan;
+
+import org.simantics.scl.compiler.compilation.CompilationContext;
+import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;
+import org.simantics.scl.compiler.elaboration.expressions.Expression;
+import org.simantics.scl.compiler.internal.codegen.references.IVal;
+import org.simantics.scl.compiler.internal.codegen.writer.CodeWriter;
+
+public class ClaimOp extends PlanOp {
+
+ CHRConstraint constraint;
+ Expression[] parameters;
+
+ public ClaimOp(long location, CHRConstraint constraint, Expression[] parameters) {
+ super(location);
+ this.constraint = constraint;
+ this.parameters = parameters;
+ }
+
+ @Override
+ public void toString(StringBuilder b) {
+ b.append("CLAIM ").append(constraint);
+ for (Expression parameter : parameters)
+ b.append(" (").append(parameter).append(')');
+ }
+
+ @Override
+ public void generateCode(CompilationContext context, PlanContext planContext, CodeWriter w) {
+ IVal[] parameterVars = new IVal[parameters.length+1];
+ parameterVars[0] = planContext.generateNewId(location, w);
+ for(int i=0;i<parameters.length;++i)
+ parameterVars[i+1] = parameters[i].toVal(context.environment, w);
+ IVal newFact = w.apply(location, constraint.constructor, parameterVars);
+ w.apply(location, constraint.addProcedure, planContext.storeVar, newFact);
+ planContext.nextOp(w);
+ }
+
+}