1 package org.simantics.scl.runtime.chr;
\r
3 import java.util.Arrays;
\r
5 class PriorityContainer {
\r
6 private static final boolean CLEANUP_ENABLED = true;
\r
9 Fact[] facts = new Fact[4];
\r
12 public PriorityContainer(int priority) {
\r
13 this.priority = priority;
\r
16 public void push(Fact item) {
\r
17 if(size == facts.length)
\r
19 facts[size++] = item;
\r
22 private void increaseCapacity() {
\r
23 if(CLEANUP_ENABLED) {
\r
24 // Cleanup dead facts
\r
26 for(int i=0;i<size;++i) {
\r
27 Fact fact = facts[i];
\r
34 // Resize if necessary
\r
35 if(size >= facts.length*3/4)
\r
36 facts = Arrays.copyOf(facts, size*2);
\r
40 return facts[--size];
\r