1 package org.simantics.scl.compiler.internal.codegen.chr;
\r
3 import org.simantics.scl.runtime.chr.CHRHashIndex;
\r
4 import org.simantics.scl.runtime.chr.Fact;
\r
5 import org.simantics.scl.runtime.chr.FactActivationQueue;
\r
7 public class ExampleStore {
\r
9 * constraint ExampleFact Integer Integer where
\r
14 * data Store // class Module$123
\r
15 * data ExampleFact // class Module$123/ExampleFact
\r
17 * add :: Store -> ExampleFact -> <Proc> ()
\r
18 * remove :: Store -> ExampleFact -> <Proc> ()
\r
19 * get_bf :: Store -> Integer -> <Proc> ExampleFact
\r
20 * next_bf :: ExampleFact -> <Proc> Maybe ExampleFact
\r
21 * idOf :: ExampleFact -> <Proc> Integer
\r
22 * isAlive :: ExampleFact -> <Proc> Boolean
\r
25 CHRHashIndex ExampleFact_bfIndex = new CHRHashIndex() {
\r
27 protected boolean keyEquals(Object a, Object b) {
\r
28 return ((ExampleFact)a).c0 == ((ExampleFact)b).c0;
\r
31 protected int keyHashCode(Object key) {
\r
32 return ((ExampleFact)key).c0;
\r
36 public FactActivationQueue queue = new FactActivationQueue(2);
\r
38 private ExampleFact ExampleFact_temp = new ExampleFact();
\r
40 public ExampleFact getExampleFact_bf(int c0) {
\r
41 ExampleFact_temp.c0 = c0;
\r
42 return (ExampleFact)ExampleFact_bfIndex.getEqual(ExampleFact_temp);
\r
45 public static class ExampleFact implements Fact {
\r
47 public int c0; // key
\r
49 public ExampleFact bfPrev;
\r
50 public ExampleFact bfNext;
\r
52 public ExampleFact() {
\r
55 public ExampleFact(int c0, int c1) {
\r
60 public void add(ExampleStore store) {
\r
61 bfNext = (ExampleFact)store.ExampleFact_bfIndex.addFreshAndReturnOld(this);
\r
63 bfNext.bfPrev = this;
\r
66 public void remove(ExampleStore store) {
\r
67 if(bfPrev == null) {
\r
69 store.ExampleFact_bfIndex.removeKnownToExistKey(this);
\r
71 bfNext.bfPrev = null;
\r
72 store.ExampleFact_bfIndex.replaceKnownToExistKey(this, bfNext);
\r
76 bfPrev.bfNext = bfNext;
\r
78 bfNext.bfPrev = bfPrev;
\r
83 public int activate(Object context, int priority) {
\r
88 public boolean isAlive() {
\r