1 package org.simantics.scl.compiler.elaboration.chr.planning;
\r
3 import java.util.Arrays;
\r
5 public class PlanPriorityQueue {
\r
6 PrePlanItem[] items = new PrePlanItem[16];
\r
9 public PrePlanItem head() {
\r
14 items[0].queuePos = -1;
\r
17 PrePlanItem e = items[size];
\r
25 public void add(PrePlanItem e) {
\r
26 if (size == items.length)
\r
27 items = Arrays.copyOf(items, size + size / 2);
\r
34 private boolean adjustUp(PrePlanItem e) {
\r
35 int pos = e.queuePos;
\r
37 int upId = (pos - 1) / 2;
\r
38 PrePlanItem upE = items[upId];
\r
39 if (e.compare(upE) >= 0)
\r
45 if (e.queuePos != pos) {
\r
53 private void adjustDown(PrePlanItem e) {
\r
54 int pos = e.queuePos;
\r
56 int downId = pos * 2 + 1;
\r
59 if (downId + 1 < size
\r
60 && items[downId].compare(items[downId + 1]) > 0)
\r
62 PrePlanItem downE = items[downId];
\r
63 if (e.compare(downE) > 0) {
\r
65 downE.queuePos = pos;
\r
70 if (e.queuePos != pos) {
\r
76 public void adjust(PrePlanItem e) {
\r
77 if(e.queuePos == -1)
\r
83 public boolean isEmpty() {
\r