Hash->HashMap, add Basket.Queue
[org.ibex.util.git] / src / org / ibex / util / Basket.java
index f3b2504..bd981b6 100644 (file)
@@ -26,9 +26,8 @@ public interface Basket extends Serializable {
     public interface RandomAccess extends List { }
 
     public interface Queue extends Basket {
-        // FIXME
-        //public void   enqueue(Object o);
-        //public Object dequeue();
+        public void   enqueue(Object o);
+        public Object dequeue();
     }
 
     public interface Stack extends Basket {
@@ -60,6 +59,16 @@ public interface Basket extends Serializable {
         public Array(int initialCapacity) { o = new Object[initialCapacity]; }
         public Array(Object entry) { this(1); add(entry); }
 
+        public void   enqueue(Object o) { add(o); }
+
+        // FEATURE: make this more efficient with general wraparound
+        public Object dequeue() {
+            if (size==0) return null;
+            Object ret = o[0];
+            for(int i=1; i<size; i++) o[i-1]=o[i];
+            return ret;
+        }
+
         public void add(Object obj) { add(size, obj); }
         public void add(int i, Object obj) {
             size(size + 1);
@@ -162,10 +171,6 @@ public interface Basket extends Serializable {
         public void push(Object o) { add(o); }
     }
 
-    //public class Tree implements RandomAccess { } FIXME
-
-    //public class IndexedTree extends Tree { } FIXME
-
     /** Implementation of a hash table using Radke's quadratic residue
      *  linear probing. Uses a single array to store all entries.
      *
@@ -173,7 +178,7 @@ public interface Basket extends Serializable {
      *
      * @author adam@ibex.org, crawshaw@ibex.org
      */
-    public abstract class Hash implements Basket {
+    public class Hash implements Basket, Map {
         static final long serialVersionUID = 3948384093L;
 
         /** Used internally to record used slots. */
@@ -347,10 +352,6 @@ public interface Basket extends Serializable {
         }
     }
 
-    public class HashMap extends Hash implements Map {
-        public HashMap() { super(); }
-        public HashMap(int x, float y) { super(x,y); }
-        public HashMap(int x, int z, float y) { super(x,z,y); }
-    }
+    // FIXME, BalancedTree goes here
 
 }