Class CharArray
- java.lang.Object
-
- com.opensymphony.module.sitemesh.html.util.CharArray
-
public class CharArray extends Object
A leaner, meaner version of StringBuffer. It provides basic functionality to handle dynamically-growing char arrays as quickly as possible. This class is not threadsafe.- Author:
- Chris Miller
-
-
Field Summary
Fields Modifier and Type Field Description (package private) char[]
buffer
(package private) int
size
(package private) int
subStrLen
(package private) int
subStrStart
-
Constructor Summary
Constructors Constructor Description CharArray(int size)
Constructs a CharArray that is initialized to the specified size.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CharArray
append(char c)
Appends a single character to the end of the character array.CharArray
append(char[] chars)
Appends the supplied characters to the end of the array.CharArray
append(char[] chars, int position, int length)
CharArray
append(CharArray chars)
Appends an existing CharArray on to this one.CharArray
append(String str)
Appends the supplied string to the end of this character array.char
charAt(int pos)
Returns the character that is at the specified position in the array.void
clear()
Clear the contents.boolean
compareLower(String lowerStr, int offset)
Compares the supplied uppercase string with the contents of the character array, starting at the offset specified.boolean
compareLowerSubstr(String lowerStr)
This compares a substring of this character array (as specified by thesetSubstr(int, int)
method call) with the supplied string.String
getLowerSubstr()
Returns the substring that was specified by thesetSubstr(int, int)
call.private void
grow(int minSize)
Grows the internal array by either ~100% or minSize (whichever is larger), up to a maximum size of Integer.MAX_VALUE.int
length()
Returns the current length of the character array.void
setLength(int newSize)
Changes the size of the character array to the value specified.void
setSubstr(int begin, int end)
Allows an arbitrary substring of this character array to be specified.int
substrHashCode()
Returns the hashcode for a lowercase version of the array's substring (as set by thesetSubstr(int, int)
method).String
substring(int begin, int end)
Returns a substring from within this character array.String
toString()
Returns a String represenation of the character array.void
writeTo(PrintWriter writer)
-
-
-
Method Detail
-
toString
public String toString()
Returns a String represenation of the character array.
-
charAt
public char charAt(int pos)
Returns the character that is at the specified position in the array. There is no bounds checking on this method so be sure to pass in a sensible value.
-
setLength
public void setLength(int newSize)
Changes the size of the character array to the value specified. If the new size is less than the current size, the data in the internal array will be truncated. If the new size is <= 0, the array will be reset to empty (but, unlike StringBuffer, the internal array will NOT be shrunk). If the new size is > the current size, the array will be padded out with null characters ('\u0000').- Parameters:
newSize
- the new size of the character array
-
length
public int length()
Returns the current length of the character array.
-
append
public CharArray append(CharArray chars)
Appends an existing CharArray on to this one. Passing in a null CharArray will result in a NullPointerException.
-
append
public CharArray append(char[] chars)
Appends the supplied characters to the end of the array.
-
append
public CharArray append(char[] chars, int position, int length)
-
append
public CharArray append(char c)
Appends a single character to the end of the character array.
-
append
public CharArray append(String str)
Appends the supplied string to the end of this character array. Passing in a null string will result in a NullPointerException.
-
substring
public String substring(int begin, int end)
Returns a substring from within this character array. Note that NO range checking is performed!
-
setSubstr
public void setSubstr(int begin, int end)
Allows an arbitrary substring of this character array to be specified. This method should be called prior to callingcompareLowerSubstr(String)
to set the range of the substring comparison.- Parameters:
begin
- the starting offset into the character array.end
- the ending offset into the character array.
-
getLowerSubstr
public String getLowerSubstr()
Returns the substring that was specified by thesetSubstr(int, int)
call.
-
compareLowerSubstr
public boolean compareLowerSubstr(String lowerStr)
This compares a substring of this character array (as specified by thesetSubstr(int, int)
method call) with the supplied string. The supplied string must be lowercase, otherwise the comparison will fail.
-
substrHashCode
public int substrHashCode()
Returns the hashcode for a lowercase version of the array's substring (as set by thesetSubstr(int, int)
method). This uses the same calculation as the String.hashCode() method so that it remains compatible with the hashcodes of normal strings.
-
compareLower
public boolean compareLower(String lowerStr, int offset)
Compares the supplied uppercase string with the contents of the character array, starting at the offset specified. This is a specialized method to help speed up the FastPageParser slightly. The supplied string is assumed to contain only uppercase ASCII characters. The offset indicates the offset into the character array that the comparison should start from. If (and only if) the supplied string and the relevant portion of the character array are considered equal, this method will return true.
-
grow
private final void grow(int minSize)
Grows the internal array by either ~100% or minSize (whichever is larger), up to a maximum size of Integer.MAX_VALUE.
-
clear
public final void clear()
Clear the contents.
-
writeTo
public void writeTo(PrintWriter writer)
-
-