X-Git-Url: http://git.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/util/CharArrayBuffer.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/util/CharArrayBuffer.java
index 38be3f8..8aecc50 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/util/CharArrayBuffer.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/util/CharArrayBuffer.java
@@ -11,25 +11,28 @@
package net.sourceforge.phpdt.internal.core.util;
/**
- * The CharArrayBuffer
is intended as a lightweight partial implementation
- * of the StringBuffer class, but using char[]'s
instead of Strings.
- *
- *
The CharArrayBuffer
maintains a list of char[]'s
- * which don't get appended until the user asks for them. The following
- * code illustrates how to use the class.
- *
+ * The CharArrayBuffer
is intended as a lightweight partial
+ * implementation of the StringBuffer class, but using char[]'s
+ * instead of Strings.
+ *
+ *
+ * The CharArrayBuffer
maintains a list of char[]'s
+ * which don't get appended until the user asks for them. The following code
+ * illustrates how to use the class.
+ *
*
* CharArrayBuffer buffer = new CharArrayBuffer(myCharArray);
* buffer.append(moreBytes, 0, someLength);
* myCharArray = buffer.getContents();
*
- *
- *
NOTE: This class is not Thread safe! + * + *
+ * NOTE: This class is not Thread safe!
*/
public class CharArrayBuffer {
/**
- * This is the buffer of char arrays which must be appended together
- * during the getContents method.
+ * This is the buffer of char arrays which must be appended together during
+ * the getContents method.
*/
protected char[][] fBuffer;
@@ -49,143 +52,173 @@ public class CharArrayBuffer {
protected int fSize;
/**
- * A buffer of ranges which is maintained along with
- * the buffer. Ranges are of the form {start, length}.
- * Enables append(char[] array, int start, int end).
+ * A buffer of ranges which is maintained along with the buffer. Ranges are
+ * of the form {start, length}. Enables append(char[] array, int start, int
+ * end).
*/
protected int[][] fRanges;
-/**
- * Creates a CharArrayBuffer
with the default buffer size (10).
- */
-public CharArrayBuffer() {
- this(null, DEFAULT_BUFFER_SIZE);
-}
-/**
- * Creates a CharArrayBuffer
with the default buffer size,
- * and sets the first element in the buffer to be the given char[].
- *
- * @param first - the first element to be placed in the buffer, ignored if null
- */
-public CharArrayBuffer(char[] first) {
- this(first, DEFAULT_BUFFER_SIZE);
-}
-/**
- * Creates a CharArrayBuffer
with the given buffer size,
- * and sets the first element in the buffer to be the given char array.
- *
- * @param first - the first element of the buffer, ignored if null.
- * @param size - the buffer size, if less than 1, set to the DEFAULT_BUFFER_SIZE.
- */
-public CharArrayBuffer(char[] first, int size) {
- fSize = (size > 0) ? size : DEFAULT_BUFFER_SIZE;
- fBuffer = new char[fSize][];
- fRanges = new int[fSize][];
- fEnd = 0;
- if (first != null)
- append(first, 0, first.length);
-}
-/**
- * Creates a CharArrayBuffer
with the given buffer size.
- *
- * @param size - the size of the buffer.
- */
-public CharArrayBuffer(int size) {
- this(null, size);
-}
-/**
- * Appends the entire given char array. Given for convenience.
- *
- * @param src - a char array which is appended to the end of the buffer.
- */
-public CharArrayBuffer append(char[] src) {
- if (src != null)
- append(src, 0, src.length);
- return this;
-}
-/**
- * Appends a sub array of the given array to the buffer.
- *
- * @param src - the next array of characters to be appended to the buffer, ignored if null
- * @param start - the start index in the src array.
- * @param length - the number of characters from start to be appended
- *
- * @throws ArrayIndexOutOfBoundsException - if arguments specify an array index out of bounds.
- */
-public CharArrayBuffer append(char[] src, int start, int length) {
- if (start < 0) throw new ArrayIndexOutOfBoundsException();
- if (length < 0) throw new ArrayIndexOutOfBoundsException();
- if (src != null) {
- int srcLength = src.length;
- if (start > srcLength) throw new ArrayIndexOutOfBoundsException();
- if (length + start > srcLength) throw new ArrayIndexOutOfBoundsException();
- /** do length check here to allow exceptions to be thrown */
- if (length > 0) {
- if (fEnd == fSize) {
- int size2 = fSize * 2;
- System.arraycopy(fBuffer, 0, (fBuffer = new char[size2][]), 0, fSize);
- System.arraycopy(fRanges, 0, (fRanges = new int[size2][]), 0, fSize);
- fSize *= 2;
+
+ /**
+ * Creates a CharArrayBuffer
with the default buffer size
+ * (10).
+ */
+ public CharArrayBuffer() {
+ this(null, DEFAULT_BUFFER_SIZE);
+ }
+
+ /**
+ * Creates a CharArrayBuffer
with the default buffer size,
+ * and sets the first element in the buffer to be the given char[].
+ *
+ * @param first -
+ * the first element to be placed in the buffer, ignored if null
+ */
+ public CharArrayBuffer(char[] first) {
+ this(first, DEFAULT_BUFFER_SIZE);
+ }
+
+ /**
+ * Creates a CharArrayBuffer
with the given buffer size, and
+ * sets the first element in the buffer to be the given char array.
+ *
+ * @param first -
+ * the first element of the buffer, ignored if null.
+ * @param size -
+ * the buffer size, if less than 1, set to the
+ * DEFAULT_BUFFER_SIZE.
+ */
+ public CharArrayBuffer(char[] first, int size) {
+ fSize = (size > 0) ? size : DEFAULT_BUFFER_SIZE;
+ fBuffer = new char[fSize][];
+ fRanges = new int[fSize][];
+ fEnd = 0;
+ if (first != null)
+ append(first, 0, first.length);
+ }
+
+ /**
+ * Creates a CharArrayBuffer
with the given buffer size.
+ *
+ * @param size -
+ * the size of the buffer.
+ */
+ public CharArrayBuffer(int size) {
+ this(null, size);
+ }
+
+ /**
+ * Appends the entire given char array. Given for convenience.
+ *
+ * @param src -
+ * a char array which is appended to the end of the buffer.
+ */
+ public CharArrayBuffer append(char[] src) {
+ if (src != null)
+ append(src, 0, src.length);
+ return this;
+ }
+
+ /**
+ * Appends a sub array of the given array to the buffer.
+ *
+ * @param src -
+ * the next array of characters to be appended to the buffer,
+ * ignored if null
+ * @param start -
+ * the start index in the src array.
+ * @param length -
+ * the number of characters from start to be appended
+ *
+ * @throws ArrayIndexOutOfBoundsException -
+ * if arguments specify an array index out of bounds.
+ */
+ public CharArrayBuffer append(char[] src, int start, int length) {
+ if (start < 0)
+ throw new ArrayIndexOutOfBoundsException();
+ if (length < 0)
+ throw new ArrayIndexOutOfBoundsException();
+ if (src != null) {
+ int srcLength = src.length;
+ if (start > srcLength)
+ throw new ArrayIndexOutOfBoundsException();
+ if (length + start > srcLength)
+ throw new ArrayIndexOutOfBoundsException();
+ /** do length check here to allow exceptions to be thrown */
+ if (length > 0) {
+ if (fEnd == fSize) {
+ int size2 = fSize * 2;
+ System.arraycopy(fBuffer, 0, (fBuffer = new char[size2][]),
+ 0, fSize);
+ System.arraycopy(fRanges, 0, (fRanges = new int[size2][]),
+ 0, fSize);
+ fSize *= 2;
+ }
+ fBuffer[fEnd] = src;
+ fRanges[fEnd] = new int[] { start, length };
+ fEnd++;
}
- fBuffer[fEnd] = src;
- fRanges[fEnd] = new int[] {start, length};
- fEnd++;
}
+ return this;
+ }
+
+ /**
+ * Appends the given char. Given for convenience.
+ *
+ * @param src -
+ * a char which is appended to the end of the buffer.
+ */
+ public CharArrayBuffer append(char c) {
+ append(new char[] { c }, 0, 1);
+ return this;
}
- return this;
-}
-/**
- * Appends the given char. Given for convenience.
- *
- * @param src - a char which is appended to the end of the buffer.
- */
-public CharArrayBuffer append(char c) {
- append(new char[] {c}, 0, 1);
- return this;
-}
-/**
- * Appends the given String to the buffer. Given for convenience, use
- * #append(char[]) if possible
- *
- * @param src - a char array which is appended to the end of the buffer.
- */
-public CharArrayBuffer append(String src) {
- if (src != null)
- append(src.toCharArray(), 0, src.length());
- return this;
-}
-/**
- * Returns the entire contents of the buffer as one
- * char[] or null if nothing has been put in the buffer.
- */
-public char[] getContents() {
- if (fEnd == 0)
- return null;
- // determine the size of the array
- int size = 0;
- for (int i = 0; i < fEnd; i++)
- size += fRanges[i][1];
-
- if (size > 0) {
- char[] result = new char[size];
- int current = 0;
- // copy the results
- for(int i = 0; i < fEnd; i++) {
- int[] range = fRanges[i];
- int length = range[1];
- System.arraycopy(fBuffer[i], range[0], result, current, length);
- current += length;
+ /**
+ * Appends the given String to the buffer. Given for convenience, use
+ * #append(char[]) if possible
+ *
+ * @param src -
+ * a char array which is appended to the end of the buffer.
+ */
+ public CharArrayBuffer append(String src) {
+ if (src != null)
+ append(src.toCharArray(), 0, src.length());
+ return this;
+ }
+
+ /**
+ * Returns the entire contents of the buffer as one char[] or null if
+ * nothing has been put in the buffer.
+ */
+ public char[] getContents() {
+ if (fEnd == 0)
+ return null;
+
+ // determine the size of the array
+ int size = 0;
+ for (int i = 0; i < fEnd; i++)
+ size += fRanges[i][1];
+
+ if (size > 0) {
+ char[] result = new char[size];
+ int current = 0;
+ // copy the results
+ for (int i = 0; i < fEnd; i++) {
+ int[] range = fRanges[i];
+ int length = range[1];
+ System.arraycopy(fBuffer[i], range[0], result, current, length);
+ current += length;
+ }
+ return result;
}
- return result;
+ return null;
+ }
+
+ /**
+ * Returns the contents of the buffer as a String, or null
if
+ * the buffer is empty.
+ */
+ public String toString() {
+ char[] contents = getContents();
+ return (contents != null) ? new String(contents) : null;
}
- return null;
-}
-/**
- * Returns the contents of the buffer as a String, or
- * null
if the buffer is empty.
- */
-public String toString() {
- char[] contents = getContents();
- return (contents != null) ? new String(contents) : null;
-}
}