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[]
     
    (package private) int
     
    (package private) int
     
    (package private) int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    CharArray(int size)
    Constructs a CharArray that is initialized to the specified size.
  • Method Summary

    Modifier and Type
    Method
    Description
    append(char c)
    Appends a single character to the end of the character array.
    append(char[] chars)
    Appends the supplied characters to the end of the array.
    append(char[] chars, int position, int length)
     
    Appends an existing CharArray on to this one.
    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.
    final void
    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
    This compares a substring of this character array (as specified by the setSubstr(int, int) method call) with the supplied string.
    Returns the substring that was specified by the setSubstr(int, int) call.
    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.
    int
    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
    Returns the hashcode for a lowercase version of the array's substring (as set by the setSubstr(int, int) method).
    substring(int begin, int end)
    Returns a substring from within this character array.
    Returns a String represenation of the character array.
    void
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • size

      int size
    • buffer

      char[] buffer
    • subStrStart

      int subStrStart
    • subStrLen

      int subStrLen
  • Constructor Details

    • CharArray

      public CharArray(int size)
      Constructs a CharArray that is initialized to the specified size. Do not pass in a negative value because there is no bounds checking!
  • Method Details

    • toString

      public String toString()
      Returns a String represenation of the character array.
      Overrides:
      toString in class Object
    • 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 invalid input: '&gt' 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 calling compareLowerSubstr(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 the setSubstr(int, int) call.
    • compareLowerSubstr

      public boolean compareLowerSubstr(String lowerStr)
      This compares a substring of this character array (as specified by the setSubstr(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 the setSubstr(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)