1 package org.simantics.scl.runtime.chr;
3 import java.util.Arrays;
5 import org.simantics.scl.runtime.reporting.SCLReporting;
7 public abstract class CHRPriorityFactContainer extends CHRPriority {
8 private static final boolean CLEANUP_ENABLED = true;
9 private static final int INITIAL_FACT_ARRAY_SIZE = 4;
11 private CHRFact[] facts = new CHRFact[INITIAL_FACT_ARRAY_SIZE];
14 public CHRPriorityFactContainer(int priority) {
18 public boolean isEmpty() {
22 public void addFact(CHRContext context, CHRFact item) {
23 //SCLReporting.print("added " + item + " to " + this);
24 ensureInContext(context);
25 if(size == facts.length)
30 private void increaseCapacity() {
34 for(int i=0;i<size;++i) {
35 CHRFact fact = facts[i];
42 // Resize if necessary
43 if(size >= facts.length*3/4)
44 facts = Arrays.copyOf(facts, size*2);
48 public void activate(CHRContext context) {
51 CHRFact fact = facts[size];
54 activate(context, fact);
58 protected abstract void activate(CHRContext context, CHRFact fact);