pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / facet / src / java / org / apache / lucene / util / UnsafeByteArrayOutputStream.java
diff --git a/lucene-java-3.4.0/lucene/contrib/facet/src/java/org/apache/lucene/util/UnsafeByteArrayOutputStream.java b/lucene-java-3.4.0/lucene/contrib/facet/src/java/org/apache/lucene/util/UnsafeByteArrayOutputStream.java
deleted file mode 100644 (file)
index d5e7f87..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-package org.apache.lucene.util;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * 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.
- */
-
-/**
- * This class is used as a wrapper to a byte array, extending
- * {@link OutputStream}. Data is written in the given byte[] buffer, until its
- * length is insufficient. Than the buffer size is doubled and the data is
- * written.
- * 
- * This class is Unsafe as it is using a buffer which potentially can be changed
- * from the outside. Moreover, when {@link #toByteArray()} is called, the buffer
- * itself is returned, and not a copy.
- * 
- * @lucene.experimental
- */
-public class UnsafeByteArrayOutputStream extends OutputStream {
-
-  private byte[] buffer;
-  private int index;
-  private int startIndex;
-
-  /**
-   * Constructs a new output stream, with a default allocated buffer which can
-   * later be obtained via {@link #toByteArray()}.
-   */
-  public UnsafeByteArrayOutputStream() {
-    reInit(new byte[32], 0);
-  }
-
-  /**
-   * Constructs a new output stream, with a given buffer. Writing will start
-   * at index 0 as a default.
-   * 
-   * @param buffer
-   *            some space to which writing will be made
-   */
-  public UnsafeByteArrayOutputStream(byte[] buffer) {
-    reInit(buffer, 0);
-  }
-
-  /**
-   * Constructs a new output stream, with a given buffer. Writing will start
-   * at a given index.
-   * 
-   * @param buffer
-   *            some space to which writing will be made.
-   * @param startPos
-   *            an index (inclusive) from white data will be written.
-   */
-  public UnsafeByteArrayOutputStream(byte[] buffer, int startPos) {
-    reInit(buffer, startPos);
-  }
-
-  private void grow(int newLength) {
-    // It actually should be: (Java 1.6)
-    // buffer = Arrays.copyOf(buffer, newLength);
-    byte[] newBuffer = new byte[newLength];
-    System.arraycopy(buffer, 0, newBuffer, 0, buffer.length);
-    buffer = newBuffer;
-  }
-
-  /**
-   * For reuse-ability, this stream object can be re-initialized with another
-   * given buffer and starting position.
-   * 
-   * @param buffer some space to which writing will be made.
-   * @param startPos an index (inclusive) from white data will be written.
-   */
-  public void reInit(byte[] buffer, int startPos) {
-    if (buffer.length == 0) {
-      throw new IllegalArgumentException("initial buffer length must be greater than 0.");
-    }
-    this.buffer = buffer;
-    startIndex = startPos;
-    index = startIndex;
-  }
-
-  /**
-   * For reuse-ability, this stream object can be re-initialized with another
-   * given buffer, using 0 as default starting position.
-   * 
-   * @param buffer some space to which writing will be made.
-   */
-  public void reInit(byte[] buffer) {
-    reInit(buffer, 0);
-  }
-
-  /**
-   * writes a given byte(at the form of an int) to the buffer. If the buffer's
-   * empty space is insufficient, the buffer is doubled.
-   * 
-   * @param value byte value to be written
-   */
-  @Override
-  public void write(int value) throws IOException {
-    if (index >= buffer.length) {
-      grow(buffer.length << 1);
-    }
-    buffer[index++] = (byte) value;
-  }
-
-  /**
-   * writes a given byte[], with offset and length to the buffer. If the
-   * buffer's empty space is insufficient, the buffer is doubled until it
-   * could contain all the data.
-   * 
-   * @param b
-   *            byte buffer, containing the source data to be written
-   * @param off
-   *            index from which data from the buffer b should be written
-   * @param len
-   *            number of bytes that should be written
-   */
-  @Override
-  public void write(byte[] b, int off, int len) throws IOException {
-    // If there's not enough space for the data
-    int targetLength = index + len;
-    if (targetLength >= buffer.length) {
-      // Calculating the new required length of the array, keeping the array
-      // size a power of 2 if it was initialized like that.
-      int newlen = buffer.length;
-      while ((newlen <<= 1) < targetLength) {}
-      grow(newlen);
-    }
-
-    // Now that we have enough spare space, we could copy the rest of the
-    // data
-    System.arraycopy(b, off, buffer, index, len);
-
-    // Updating the index to next available index.
-    index += len;
-  }
-
-  /**
-   * Returns the byte array saved within the buffer AS IS.
-   * 
-   * @return the actual inner buffer - not a copy of it.
-   */
-  public byte[] toByteArray() {
-    return buffer;
-  }
-
-  /**
-   * Returns the number of relevant bytes. This objects makes sure the buffer
-   * is at least the size of it's data. But it can also be twice as big. The
-   * user would want to process the relevant bytes only. For that he would
-   * need the count.
-   * 
-   * @return number of relevant bytes
-   */
-  public int length() {
-    return index;
-  }
-
-  /**
-   * Returns the start position data was written to. This is useful in case you
-   * used {@link #reInit(byte[], int)} or
-   * {@link #UnsafeByteArrayOutputStream(byte[], int)} and passed a start
-   * position which is not 0.
-   */
-  public int getStartPos() {
-    return startIndex;
-  }
-
-}