+++ /dev/null
-package org.simantics.scl.runtime.chr;
-
-import java.util.Arrays;
-
-class PriorityContainer {
- private static final boolean CLEANUP_ENABLED = true;
-
- final int priority;
- Fact[] facts = new Fact[4];
- int size;
-
- public PriorityContainer(int priority) {
- this.priority = priority;
- }
-
- public void push(Fact item) {
- if(size == facts.length)
- increaseCapacity();
- facts[size++] = item;
- }
-
- private void increaseCapacity() {
- if(CLEANUP_ENABLED) {
- // Cleanup dead facts
- int j=0;
- for(int i=0;i<size;++i) {
- Fact fact = facts[i];
- if(fact.isAlive())
- facts[j++] = fact;
- }
- size = j;
- }
-
- // Resize if necessary
- if(size >= facts.length*3/4)
- facts = Arrays.copyOf(facts, size*2);
- }
-
- public Fact pop() {
- return facts[--size];
- }
-}