net.sf.saxon.tinytree

Class CharSlice

public final class CharSlice extends Object implements CharSequence, Serializable

This is an implementation of the JDK 1.4 CharSequence interface: it implements a CharSequence as a view of an array. The implementation relies on the array being immutable: as a minimum, the caller is required to ensure that the array contents will not change so long as the CharSlice remains in existence. This class should be more efficient than String because it avoids copying the characters unnecessarily. The methods in the class don't check their arguments. Incorrect arguments will generally result in exceptions from lower-level classes.
Constructor Summary
CharSlice(char[] array)
Create a CharSlice that maps to the whole of a char[] array
CharSlice(char[] array, int start, int length)
Create a CharSlice that maps to a section of a char[] array
Method Summary
charcharAt(int index)
Returns the character at the specified index.
voidcopyTo(char[] destination, int destOffset)
Append the contents to another array at a given offset.
booleanequals(Object other)
Compare equality
voidgetChars(int start, int end, char[] destination, int destOffset)
Append the contents to another array at a given offset.
inthashCode()
Generate a hash code
intindexOf(char c)
Get the index of a specific character in the sequence.
intlength()
Returns the length of this character sequence.
voidsetLength(int length)
Set the length of this character sequence, without changing the array and start offset to which it is bound
Stringsubstring(int start, int end)
Returns a new character sequence that is a subsequence of this sequence.
CharSequencesubSequence(int start, int end)
Returns a new character sequence that is a subsequence of this sequence.
StringtoString()
Convert to a string
voidwrite(Writer writer)
Write the value to a writer

Constructor Detail

CharSlice

public CharSlice(char[] array)
Create a CharSlice that maps to the whole of a char[] array

Parameters: array the char[] array

CharSlice

public CharSlice(char[] array, int start, int length)
Create a CharSlice that maps to a section of a char[] array

Parameters: array the char[] array start position of the first character to be included length number of characters to be included

Method Detail

charAt

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

Parameters: index the index of the character to be returned

Returns: the specified character

Throws: java.lang.IndexOutOfBoundsException if the index argument is negative or not less than length()

copyTo

public void copyTo(char[] destination, int destOffset)
Append the contents to another array at a given offset. The caller is responsible for ensuring that sufficient space is available.

Parameters: destination the array to which the characters will be copied destOffset the offset in the target array where the copy will start

equals

public boolean equals(Object other)
Compare equality

getChars

public void getChars(int start, int end, char[] destination, int destOffset)
Append the contents to another array at a given offset. The caller is responsible for ensuring that sufficient space is available. Otherwise this behaves like String.getChars()

Parameters: start offset of first character to be copied end offset of the first character that is not copied destination the array to which the characters will be copied destOffset the offset in the target array where the copy will start

hashCode

public int hashCode()
Generate a hash code

indexOf

public int indexOf(char c)
Get the index of a specific character in the sequence. Returns -1 if not found. This method mimics String#indexOf

Parameters: c the character to be found

Returns: the position of the first occurrence of that character, or -1 if not found.

length

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

Returns: the number of characters in this sequence

setLength

public void setLength(int length)
Set the length of this character sequence, without changing the array and start offset to which it is bound

Parameters: length the new length of the CharSlice (which must be less than the existing length, though this is not enforced)

substring

public String substring(int start, int end)
Returns a new character sequence that is a subsequence of this sequence. Unlike subSequence, this is guaranteed to return a String.

Parameters: start position of the first character to be included (relative to the start of the CharSlice, not the underlying array) end position of the first character not to be included (relative to the start of the CharSlice)

Returns: the substring, as a String object

subSequence

public CharSequence subSequence(int start, int end)
Returns a new character sequence that is a subsequence of this sequence. The subsequence starts with the character at the specified index and ends with the character at index end - 1. The length 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: java.lang.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 to a string

write

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

Parameters: writer the writer to be written to