net.sf.saxon.om

Class FastStringBuffer

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.)
Field Summary
static intLARGE
static intMEDIUM
static intSMALL
static intTINY
Constructor Summary
FastStringBuffer(int initialSize)
Create a FastStringBuffer with a given initial capacity
FastStringBuffer(CharSequence cs)
Create a FastStringBuffer with initial content
Method Summary
voidappend(String s)
Append the contents of a String to the buffer
voidappend(CharSlice s)
Append the contents of a CharSlice to the buffer
voidappend(FastStringBuffer s)
Append the contents of a FastStringBuffer to the buffer
voidappend(StringBuffer s)
Append the contents of a StringBuffer to the buffer
voidappend(CharSequence s)
Append the contents of a general CharSequence to the buffer
voidappend(char[] srcArray, int start, int length)
Append the contents of a character array to the buffer
voidappend(char[] srcArray)
Append the entire contents of a character array to the buffer
voidappend(char ch)
Append a character to the buffer
voidappendWideChar(int ch)
Append a wide character to the buffer (as a surrogate pair if necessary)
charcharAt(int index)
Returns the char value at the specified index.
CharSequencecondense()
Remove surplus space from the array.
static StringdiagnosticPrint(CharSequence in)
Diagnostic print of the contents of a CharSequence.
voidensureCapacity(int extra)
Expand the character array if necessary to ensure capacity for appended data
char[]getCharArray()
Get a char[] array containing the characters.
voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Copies characters from this FastStringBuffer into the destination character array.
intindexOf(char ch)
Get the index of the first character equal to a given value
voidinsertCharAt(int index, char ch)
Insert a character at a particular offset
intlength()
Returns the length of this character sequence.
voidprepend(char ch)
Insert a given character at the start of the buffer
voidprependRepeated(char ch, int repeat)
Insert a given character N times at the start of the buffer
voidprependWideChar(int ch)
Prepend a wide character to the buffer (as a surrogate pair if necessary)
voidremoveCharAt(int index)
Remove a character at a particular offset
voidsetCharAt(int index, char ch)
Set the character at a particular offset
voidsetLength(int length)
Set the length.
CharSequencesubSequence(int start, int end)
Returns a new CharSequence that is a subsequence of this sequence.
StringtoString()
Convert contents of the FastStringBuffer to a string
voidwrite(Writer writer)
Write the value to a writer

Field Detail

LARGE

public static final int LARGE

MEDIUM

public static final int MEDIUM

SMALL

public static final int SMALL

TINY

public static final int TINY

Constructor Detail

FastStringBuffer

public FastStringBuffer(int initialSize)
Create a FastStringBuffer with a given initial capacity

Parameters: initialSize the initial capacity

FastStringBuffer

public FastStringBuffer(CharSequence cs)
Create a FastStringBuffer with initial content

Parameters: cs the initial content. The buffer is created with just enough capacity for this content (it will be expanded if more content is added later).

Method Detail

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)

Parameters: ch the character, as a 32-bit Unicode codepoint

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.

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()

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 and more than 20 chars.

Returns: the buffer after removing unused space

diagnosticPrint

public static String diagnosticPrint(CharSequence in)
Diagnostic print of the contents of a CharSequence. Ordinary printable ASCII characters are displayed as themselves; anything else is displayed as a \\uNNNN escape sequence

Parameters: in the CharSequence whose contents are to be displayed.

Returns: the diagnostic output

ensureCapacity

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

Parameters: extra the amount of additional capacity needed, in characters

getCharArray

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

Returns: a char[] array containing the characters

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:

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

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 int<0 or int>=length()

length

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

Returns: the number of chars in this sequence

prepend

public void prepend(char ch)
Insert a given character at the start of the buffer

Parameters: ch the character to insert

prependRepeated

public void prependRepeated(char ch, int repeat)
Insert a given character N times at the start of the buffer

Parameters: ch the character to insert repeat the number of occurrences required. Supplying 0 or a negative number is OK, and is treated as a no-op.

prependWideChar

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

Parameters: ch the character, as a 32-bit Unicode codepoint

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 int<0 or int>=length()

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 int<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

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.

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

toString

public String toString()
Convert contents of the FastStringBuffer to a string

write

public void write(Writer writer)
Write the value to a writer

Parameters: writer the writer to which the content is to be written