pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / contrib / facet / src / java / org / apache / lucene / facet / search / Heap.java
diff --git a/lucene-java-3.5.0/lucene/contrib/facet/src/java/org/apache/lucene/facet/search/Heap.java b/lucene-java-3.5.0/lucene/contrib/facet/src/java/org/apache/lucene/facet/search/Heap.java
new file mode 100644 (file)
index 0000000..8dc5cce
--- /dev/null
@@ -0,0 +1,56 @@
+package org.apache.lucene.facet.search;
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/** 
+ * Declares an interface for heap (and heap alike) structures, 
+ * handling a given type T
+ * 
+ * @lucene.experimental
+ */
+public interface Heap<T> {
+  /**
+   * Get and remove the top of the Heap <BR>
+   * NOTE: Once {@link #pop()} is called no other {@link #add(Object)} or
+   * {@link #insertWithOverflow(Object)} should be called.
+   */
+  public T pop();
+  
+  /** Get (But not remove) the top of the Heap */ 
+  public T top();
+  
+  /**
+   * Insert a new value, returning the overflowen object <br>
+   * NOTE: This method should not be called after invoking {@link #pop()}
+   */
+  public T insertWithOverflow(T value);
+  
+  /** 
+   * Add a new value to the heap, return the new top(). <br>
+   * Some implementations may choose to not implement this functionality. 
+   * In such a case <code>null</code> should be returned. <BR> 
+   * NOTE: This method should not be called after invoking {@link #pop()}
+   */
+  public T add(T frn);
+  
+  /** Clear the heap */ 
+  public void clear();
+  
+  /** Return the amount of objects currently in the heap */
+  public int size();
+}