-package org.simantics.scl.compiler.elaboration.chr;\r
-\r
-import org.simantics.scl.compiler.constants.Constant;\r
-import org.simantics.scl.compiler.constants.JavaConstructor;\r
-import org.simantics.scl.compiler.internal.codegen.chr.CHRCodeGenerator;\r
-import org.simantics.scl.compiler.internal.codegen.references.BoundVar;\r
-import org.simantics.scl.compiler.internal.codegen.ssa.SSAObject;\r
-import org.simantics.scl.compiler.internal.codegen.utils.ModuleBuilder;\r
-import org.simantics.scl.compiler.types.Types;\r
-\r
-public class CHRRulesetObject extends SSAObject {\r
- CHRRuleset ruleset;\r
-\r
- public CHRRulesetObject(BoundVar target, CHRRuleset ruleset) {\r
- super(ruleset.storeType);\r
- this.setTarget(target);\r
- this.ruleset = ruleset;\r
- }\r
- \r
- @Override\r
- public Constant liftClosure(BoundVar newTarget, BoundVar[] parameters) {\r
- ruleset.this_ = newTarget;\r
- ruleset.parameters = parameters;\r
- return new JavaConstructor(ruleset.storeClassName, Types.PROC, ruleset.storeType, Types.getTypes(parameters));\r
- }\r
- \r
- @Override\r
- public void generateCode(ModuleBuilder moduleBuilder) {\r
- CHRCodeGenerator.generateStore(moduleBuilder, ruleset);\r
- }\r
-}\r
+package org.simantics.scl.compiler.elaboration.chr;
+
+import org.simantics.scl.compiler.constants.Constant;
+import org.simantics.scl.compiler.constants.JavaConstructor;
+import org.simantics.scl.compiler.internal.codegen.chr.CHRRuntimeRulesetCodeGenerator;
+import org.simantics.scl.compiler.internal.codegen.references.BoundVar;
+import org.simantics.scl.compiler.internal.codegen.ssa.SSAObject;
+import org.simantics.scl.compiler.internal.codegen.utils.ModuleBuilder;
+import org.simantics.scl.compiler.types.Types;
+
+public class CHRRulesetObject extends SSAObject {
+ CHRRuleset ruleset;
+
+ public CHRRulesetObject(BoundVar target, CHRRuleset ruleset) {
+ super(ruleset.runtimeRulesetType);
+ this.setTarget(target);
+ this.ruleset = ruleset;
+ }
+
+ @Override
+ public Constant liftClosure(BoundVar newTarget, BoundVar[] parameters) {
+ ruleset.this_ = newTarget;
+ ruleset.parameters = parameters;
+ return new JavaConstructor(ruleset.runtimeRulesetName, Types.PROC, ruleset.runtimeRulesetType, Types.getTypes(parameters));
+ }
+
+ @Override
+ public void generateCode(ModuleBuilder moduleBuilder) {
+ CHRRuntimeRulesetCodeGenerator.generateRuntimeRuleset(moduleBuilder, ruleset);
+ }
+}