X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.runtime%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fruntime%2Fchr%2FFactActivationQueue.java;fp=bundles%2Forg.simantics.scl.runtime%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fruntime%2Fchr%2FFactActivationQueue.java;h=0000000000000000000000000000000000000000;hp=fcfa01f13c8fd6bed8648c2fa0451682c837f1cb;hb=a2df536f7fc878982c6c960a79ed49f350cddc6f;hpb=5f0ad7a26810df602600c5eddad317588fce0ac4 diff --git a/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/chr/FactActivationQueue.java b/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/chr/FactActivationQueue.java deleted file mode 100644 index fcfa01f13..000000000 --- a/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/chr/FactActivationQueue.java +++ /dev/null @@ -1,120 +0,0 @@ -package org.simantics.scl.runtime.chr; - -import java.util.Arrays; - -public class FactActivationQueue { - public static final boolean TRACE = false; - - private final PriorityContainer[] containers; - private PriorityContainer[] activeContainers = new PriorityContainer[8]; - private int activeContainerCount; - - public FactActivationQueue(int priorityCount) { - if(TRACE) - System.out.println("priorityCount = " + priorityCount); - containers = new PriorityContainer[priorityCount]; - for(int i=0;i= activeContainerCount) { - if(npos >= activeContainerCount) - break; - PriorityContainer item1 = activeContainers[npos]; - if(priority > item1.priority) { - activeContainers[pos] = item1; - activeContainers[npos] = item; - return; - } - else - break; - } - PriorityContainer item1 = activeContainers[npos]; - PriorityContainer item2 = activeContainers[npos+1]; - if(priority < item1.priority) { - if(priority < item2.priority) - break; - } - else { - if(item1.priority < item2.priority) { - activeContainers[pos] = item1; - pos = npos; - continue; - } - } - activeContainers[pos] = item2; - pos = npos+1; - } - activeContainers[pos] = item; - } - - private void adjustUpwards(int pos, PriorityContainer item) { - int priority = item.priority; - while(pos > 0) { - int npos = (pos-1)/2; - PriorityContainer item1 = activeContainers[npos]; - if(item1.priority > priority) { - activeContainers[pos] = item1; - pos = npos; - } - else - break; - } - activeContainers[pos] = item; - } - - /** - * Activates all facts with priority less than the current priority - */ - public void activate(Object context, int currentPriority) { - if(TRACE) - System.out.println("FactActivationQueue.activate " + currentPriority); - while(activeContainerCount > 0) { - PriorityContainer topContainer = activeContainers[0]; - int priority = topContainer.priority; - if(priority >= currentPriority) - return; - - Fact fact = topContainer.pop(); - if(topContainer.size == 0) - deactivateContainer(); - - int newPriority = fact.activate(context, priority); - if(TRACE) - System.out.println(" [" + currentPriority + "] " + fact + " oldPriority=" + priority + ", newPriority=" + newPriority); - if(newPriority >= 0) - add(newPriority, fact); - } - } -}