]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/plan/PartnerFact.java
Merged changes from feature/scl to master.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / chr / plan / PartnerFact.java
1 package org.simantics.scl.compiler.elaboration.chr.plan;\r
2 \r
3 import org.simantics.scl.compiler.constants.Constant;\r
4 import org.simantics.scl.compiler.constants.JavaComparisonOperation;\r
5 import org.simantics.scl.compiler.constants.JavaComparisonToZeroOperation;\r
6 import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint;\r
7 import org.simantics.scl.compiler.internal.codegen.continuations.ICont;\r
8 import org.simantics.scl.compiler.internal.codegen.references.IVal;\r
9 import org.simantics.scl.compiler.internal.codegen.writer.CodeWriter;\r
10 \r
11 public class PartnerFact {\r
12     public final boolean active;\r
13     public final IVal id;\r
14     public final CHRConstraint constraint;\r
15     public final IVal factVar;\r
16     public final boolean mayBeRemoved;\r
17     public final boolean killAfterMatch;\r
18 \r
19     public final Constant nextFact;\r
20     public final ICont continueCont;\r
21     public final ICont finishCont;\r
22     \r
23     public PartnerFact(boolean active, IVal id, CHRConstraint constraint, IVal factVar, boolean mayBeRemoved, boolean killAfterMatch,\r
24             Constant nextFact, ICont continueCont, ICont finishCont) {\r
25         this.active = active;\r
26         this.id = id;\r
27         this.constraint = constraint;\r
28         this.factVar = factVar;\r
29         this.mayBeRemoved = mayBeRemoved;\r
30         this.killAfterMatch = killAfterMatch;\r
31         this.nextFact = nextFact;\r
32         this.continueCont = continueCont;\r
33         this.finishCont = finishCont;\r
34     }\r
35     \r
36     public IVal isAlive(long location, CodeWriter w) {\r
37         return w.apply(location, JavaComparisonOperation.IEQUAL, w.apply(location, constraint.accessId, factVar), id);\r
38     }\r
39     \r
40     public IVal isAlive(long location, CodeWriter w, IVal fact) {\r
41         return w.apply(location, JavaComparisonToZeroOperation.IGREATER_OR_EQUAL, w.apply(location, constraint.accessId, fact));\r
42     }\r
43 }\r