1 package org.simantics.scl.compiler.elaboration.chr;
\r
3 import org.simantics.scl.compiler.constants.Constant;
\r
4 import org.simantics.scl.compiler.constants.JavaConstructor;
\r
5 import org.simantics.scl.compiler.internal.codegen.chr.CHRCodeGenerator;
\r
6 import org.simantics.scl.compiler.internal.codegen.references.BoundVar;
\r
7 import org.simantics.scl.compiler.internal.codegen.ssa.SSAObject;
\r
8 import org.simantics.scl.compiler.internal.codegen.utils.ModuleBuilder;
\r
9 import org.simantics.scl.compiler.types.Types;
\r
11 public class CHRRulesetObject extends SSAObject {
\r
14 public CHRRulesetObject(BoundVar target, CHRRuleset ruleset) {
\r
15 super(ruleset.storeType);
\r
16 this.setTarget(target);
\r
17 this.ruleset = ruleset;
\r
21 public Constant liftClosure(BoundVar newTarget, BoundVar[] parameters) {
\r
22 ruleset.this_ = newTarget;
\r
23 ruleset.parameters = parameters;
\r
24 return new JavaConstructor(ruleset.storeClassName, Types.PROC, ruleset.storeType, Types.getTypes(parameters));
\r
28 public void generateCode(ModuleBuilder moduleBuilder) {
\r
29 CHRCodeGenerator.generateStore(moduleBuilder, ruleset);
\r