Package net.sf.saxon.om
Class FastStringBuffer
- java.lang.Object
-
- net.sf.saxon.om.FastStringBuffer
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.CharSequence
public final class FastStringBuffer extends java.lang.Object implements java.lang.CharSequence, java.io.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:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description FastStringBuffer(int initialSize)
FastStringBuffer(java.lang.CharSequence cs)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
append(char ch)
Append a character to the buffervoid
append(char[] srcArray)
Append the entire contents of a character array to the buffervoid
append(char[] srcArray, int start, int length)
Append the contents of a character array to the buffervoid
append(java.lang.CharSequence s)
Append the contents of a general CharSequence to the buffervoid
append(java.lang.String s)
Append the contents of a String to the buffervoid
append(java.lang.StringBuffer s)
Append the contents of a StringBuffer to the buffervoid
append(FastStringBuffer s)
Append the contents of a FastStringBuffer to the buffervoid
append(CharSlice s)
Append the contents of a CharSlice to the buffervoid
appendWideChar(int ch)
Append a wide character to the buffer (as a surrogate pair if necessary)char
charAt(int index)
Returns thechar
value at the specified index.java.lang.CharSequence
condense()
Remove surplus space from the array.static java.lang.String
diagnosticPrint(java.lang.CharSequence in)
Diagnostic print of the contents of a CharSequencevoid
ensureCapacity(int extra)
Expand the character array if necessary to ensure capacity for appended datachar[]
getCharArray()
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 valuevoid
insertCharAt(int index, char ch)
Insert a character at a particular offsetint
length()
Returns the length of this character sequence.void
prependWideChar(int ch)
Prepend a wide character to the buffer (as a surrogate pair if necessary)void
removeCharAt(int index)
Remove a character at a particular offsetvoid
setCharAt(int index, char ch)
Set the character at a particular offsetvoid
setLength(int length)
Set the length.java.lang.CharSequence
subSequence(int start, int end)
Returns a newCharSequence
that is a subsequence of this sequence.java.lang.String
toString()
Convert contents of the FastStringBuffer to a stringvoid
write(java.io.Writer writer)
Write the value to a writer
-
-
-
Method Detail
-
append
public void append(java.lang.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(java.lang.StringBuffer s)
Append the contents of a StringBuffer to the buffer- Parameters:
s
- the StringBuffer to be appended
-
append
public void append(java.lang.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 addedstart
- the offset of the first character in the array to be copiedlength
- 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-bitchar
s in the sequence.- Specified by:
length
in interfacejava.lang.CharSequence
- Returns:
- the number of
char
s in this sequence
-
charAt
public char charAt(int index)
Returns thechar
value at the specified index. An index ranges from zero to length() - 1. The firstchar
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 interfacejava.lang.CharSequence
- Parameters:
index
- the index of thechar
value to be returned- Returns:
- the specified
char
value - Throws:
java.lang.IndexOutOfBoundsException
- if the index argument is negative or not less than length()
-
subSequence
public java.lang.CharSequence subSequence(int start, int end)
Returns a newCharSequence
that is a subsequence of this sequence. The subsequence starts with thechar
value at the specified index and ends with thechar
value at index end - 1. The length (inchar
s) of the returned sequence is end - start, so if start == end then an empty sequence is returned.- Specified by:
subSequence
in interfacejava.lang.CharSequence
- Parameters:
start
- the start index, inclusiveend
- the end index, exclusive- Returns:
- the specified subsequence
- Throws:
java.lang.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 indexsrcEnd-1
(thus the total number of characters to be copied issrcEnd-srcBegin
). The characters are copied into the subarray ofdst
starting at indexdstBegin
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:
java.lang.IndexOutOfBoundsException
- If any of the following is true:srcBegin
is negative.srcBegin
is greater thansrcEnd
srcEnd
is greater than the length of this stringdstBegin
is negativedstBegin+(srcEnd-srcBegin)
is larger thandst.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 java.lang.String toString()
Convert contents of the FastStringBuffer to a string- Specified by:
toString
in interfacejava.lang.CharSequence
- Overrides:
toString
in classjava.lang.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 setch
- the new character to overwrite the existing character at that location- Throws:
java.lang.IndexOutOfBoundsException
- if int<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 setch
- the new character to insert at that location- Throws:
java.lang.IndexOutOfBoundsException
- if int<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:
java.lang.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
-
ensureCapacity
public void ensureCapacity(int extra)
Expand the character array if necessary to ensure capacity for appended data
-
condense
public java.lang.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(java.io.Writer writer) throws java.io.IOException
Write the value to a writer- Throws:
java.io.IOException
-
diagnosticPrint
public static java.lang.String diagnosticPrint(java.lang.CharSequence in)
Diagnostic print of the contents of a CharSequence
-
-