Class FastStringBuffer

java.lang.Object
net.sf.saxon.om.FastStringBuffer
All Implemented Interfaces:
Serializable, CharSequence

public final class FastStringBuffer extends Object implements CharSequence, Serializable
A simple implementation of a class similar to StringBuffer. Unlike StringBuffer it is not synchronized. It also offers the capability to remove unused space. (This class could possibly be replaced by StringBuilder in JDK 1.5, but using our own class gives more control.)
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    FastStringBuffer(int initialSize)
     
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    append(char ch)
    Append a character to the buffer
    void
    append(char[] srcArray)
    Append the entire contents of a character array to the buffer
    void
    append(char[] srcArray, int start, int length)
    Append the contents of a character array to the buffer
    void
    Append the contents of a general CharSequence to the buffer
    void
    Append the contents of a String to the buffer
    void
    Append the contents of a StringBuffer to the buffer
    void
    Append the contents of a FastStringBuffer to the buffer
    void
    Append the contents of a CharSlice to the buffer
    void
    Append a wide character to the buffer (as a surrogate pair if necessary)
    char
    charAt(int index)
    Returns the char value at the specified index.
    Remove surplus space from the array.
    static String
    Diagnostic print of the contents of a CharSequence
    void
    ensureCapacity(int extra)
    Expand the character array if necessary to ensure capacity for appended data
    char[]
    Get a char[] array containing the characters.
    void
    getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
    Copies characters from this FastStringBuffer into the destination character array.
    int
    indexOf(char ch)
    Get the index of the first character equal to a given value
    void
    insertCharAt(int index, char ch)
    Insert a character at a particular offset
    int
    Returns the length of this character sequence.
    void
    Prepend a wide character to the buffer (as a surrogate pair if necessary)
    void
    removeCharAt(int index)
    Remove a character at a particular offset
    void
    setCharAt(int index, char ch)
    Set the character at a particular offset
    void
    setLength(int length)
    Set the length.
    subSequence(int start, int end)
    Returns a new CharSequence that is a subsequence of this sequence.
    Convert contents of the FastStringBuffer to a string
    void
    write(Writer writer)
    Write the value to a writer

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface java.lang.CharSequence

    chars, codePoints, isEmpty
  • Constructor Details

    • FastStringBuffer

      public FastStringBuffer(int initialSize)
    • FastStringBuffer

      public FastStringBuffer(CharSequence cs)
  • Method Details

    • append

      public void append(String s)
      Append the contents of a String to the buffer
      Parameters:
      s - the String to be appended
    • append

      public void append(CharSlice s)
      Append the contents of a CharSlice to the buffer
      Parameters:
      s - the String to be appended
    • append

      public void append(FastStringBuffer s)
      Append the contents of a FastStringBuffer to the buffer
      Parameters:
      s - the FastStringBuffer to be appended
    • append

      public void append(StringBuffer s)
      Append the contents of a StringBuffer to the buffer
      Parameters:
      s - the StringBuffer to be appended
    • append

      public void append(CharSequence s)
      Append the contents of a general CharSequence to the buffer
      Parameters:
      s - the CharSequence to be appended
    • append

      public void append(char[] srcArray, int start, int length)
      Append the contents of a character array to the buffer
      Parameters:
      srcArray - the array whose contents are to be added
      start - the offset of the first character in the array to be copied
      length - the number of characters to be copied
    • append

      public void append(char[] srcArray)
      Append the entire contents of a character array to the buffer
      Parameters:
      srcArray - the array whose contents are to be added
    • append

      public void append(char ch)
      Append a character to the buffer
      Parameters:
      ch - the character to be added
    • appendWideChar

      public void appendWideChar(int ch)
      Append a wide character to the buffer (as a surrogate pair if necessary)
    • prependWideChar

      public void prependWideChar(int ch)
      Prepend a wide character to the buffer (as a surrogate pair if necessary)
    • length

      public int length()
      Returns the length of this character sequence. The length is the number of 16-bit chars in the sequence.

      Specified by:
      length in interface CharSequence
      Returns:
      the number of chars in this sequence
    • charAt

      public char charAt(int index)
      Returns the char value at the specified index. An index ranges from zero to length() - 1. The first char value of the sequence is at index zero, the next at index one, and so on, as for array indexing.

      If the char value specified by the index is a surrogate, the surrogate value is returned.

      Specified by:
      charAt in interface CharSequence
      Parameters:
      index - the index of the char value to be returned
      Returns:
      the specified char value
      Throws:
      IndexOutOfBoundsException - if the index argument is negative or not less than length()
    • subSequence

      public CharSequence subSequence(int start, int end)
      Returns a new CharSequence that is a subsequence of this sequence. The subsequence starts with the char value at the specified index and ends with the char value at index end - 1. The length (in chars) of the returned sequence is end - start, so if start == end then an empty sequence is returned.

      Specified by:
      subSequence in interface CharSequence
      Parameters:
      start - the start index, inclusive
      end - the end index, exclusive
      Returns:
      the specified subsequence
      Throws:
      IndexOutOfBoundsException - if start or end are negative, if end is greater than length(), or if start is greater than end
    • getChars

      public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
      Copies characters from this FastStringBuffer into the destination character array.

      The first character to be copied is at index srcBegin; the last character to be copied is at index srcEnd-1 (thus the total number of characters to be copied is srcEnd-srcBegin). The characters are copied into the subarray of dst starting at index dstBegin and ending at index:

           dstbegin + (srcEnd-srcBegin) - 1
       
      Parameters:
      srcBegin - index of the first character in the string to copy.
      srcEnd - index after the last character in the string to copy.
      dst - the destination array.
      dstBegin - the start offset in the destination array.
      Throws:
      IndexOutOfBoundsException - If any of the following is true:
      • srcBegin is negative.
      • srcBegin is greater than srcEnd
      • srcEnd is greater than the length of this string
      • dstBegin is negative
      • dstBegin+(srcEnd-srcBegin) is larger than dst.length
    • indexOf

      public int indexOf(char ch)
      Get the index of the first character equal to a given value
      Parameters:
      ch - the character to search for
      Returns:
      the position of the first occurrence, or -1 if not found
    • toString

      public String toString()
      Convert contents of the FastStringBuffer to a string
      Specified by:
      toString in interface CharSequence
      Overrides:
      toString in class Object
    • getCharArray

      public char[] getCharArray()
      Get a char[] array containing the characters. The caller should not modify the array.
    • setCharAt

      public void setCharAt(int index, char ch)
      Set the character at a particular offset
      Parameters:
      index - the index of the character to be set
      ch - the new character to overwrite the existing character at that location
      Throws:
      IndexOutOfBoundsException - if intinvalid input: '<'0 or int>=length()
    • insertCharAt

      public void insertCharAt(int index, char ch)
      Insert a character at a particular offset
      Parameters:
      index - the index of the character to be set
      ch - the new character to insert at that location
      Throws:
      IndexOutOfBoundsException - if intinvalid input: '<'0 or int>=length()
    • removeCharAt

      public void removeCharAt(int index)
      Remove a character at a particular offset
      Parameters:
      index - the index of the character to be set
      Throws:
      IndexOutOfBoundsException - if intinvalid input: '<'0 or int>=length()
    • setLength

      public void setLength(int length)
      Set the length. If this exceeds the current length, this method is a no-op. If this is less than the current length, characters beyond the specified point are deleted.
      Parameters:
      length - the new length
    • ensureCapacity

      public void ensureCapacity(int extra)
      Expand the character array if necessary to ensure capacity for appended data
    • condense

      public CharSequence condense()
      Remove surplus space from the array. This doesn't reduce the array to the minimum possible size; it only reclaims space if it seems worth doing. Specifically, it contracts the array if the amount of wasted space is more than 256 characters, or more than half the allocated size.
    • write

      public void write(Writer writer) throws IOException
      Write the value to a writer
      Throws:
      IOException
    • diagnosticPrint

      public static String diagnosticPrint(CharSequence in)
      Diagnostic print of the contents of a CharSequence