## org.apache.xerces.utils
Class CharDataChunk

    java.lang.Object
      |
      +--org.apache.xerces.utils.CharDataChunk

public final class CharDataChunk
extends java.lang.Object
implements StringPool.StringProducer

This class provides the character buffers used by some of the reader classes. The instances of this class are reference counted and placed upon a free list for reallocation when no longer in use so that they are reclaimed faster and with less overhead than using the garbage collector.

Version:

Field Summary
`static int` `CHUNK_MASK`
`static int` `CHUNK_SHIFT` Chunk size constants The reader classes use the chunk size directly for better performance.
`static int` `CHUNK_SIZE`

Method Summary
`int` `addString(int offset, int length)` Add a range from this chunk to the `StringPool`
`int` `addSymbol(int offset, int length, int hashcode)` Add a range from this chunk to the `StringPool` as a symbol
`void` `append(XMLEntityHandler.CharBuffer charBuffer, int offset, int length)` Append data from a `CharBuffer` to this chunk.
`CharDataChunk` `chunkFor(int offset)` Return the instance that contains the specified offset.
`boolean` `clearPreviousChunk()` Clean the previous chunk reference.
`static CharDataChunk` `createChunk(StringPool stringPool, CharDataChunk prev)` Public constructor (factory) If there are any free instances available, remove them from the free list and reinitialize them.
`boolean` `equalsString(int offset, int length, char[] strChars, int strOffset, int strLength)` Compare a range in this chunk and a range in a character array for equality
`CharDataChunk` `nextChunk()` Get the next chunk.
`void` `releaseChunk()` Release the reference to this chunk held by the reader that allocated this instance.
`void` `releaseString(int offset, int length)` Release a string from this chunk
`void` `setCharArray(char[] data)` Set the character array for this instance.
`char[]` `toCharArray()` Get the character array of this instance.
`java.lang.String` `toString(int offset, int length)` Return a range of characters as a `String`.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### CHUNK_SHIFT

    public static final int CHUNK_SHIFT

  Chunk size constants The reader classes use the chunk size directly for better performance.

### CHUNK_SIZE

    public static final int CHUNK_SIZE

### CHUNK_MASK

    public static final int CHUNK_MASK

Method Detail

### createChunk

    public static CharDataChunk createChunk(StringPool stringPool,
                                            CharDataChunk prev)

  Public constructor (factory) If there are any free instances available, remove them from the free list and reinitialize them. If not, allocate a new one.
  Parameters:
    `stringPool` - The string pool.
    `prev` - The chunk that precedes this one, or null if this is the first chunk.
  Returns:
    The instance reused or created.

### chunkFor

    public CharDataChunk chunkFor(int offset)

  Return the instance that contains the specified offset. This method must always be invoked on an instance that contains the specified offset, or an instance the contains an offset greater than, i.e. after, the instance we are to return.
  Parameters:
    `offset` - The offset to find.
  Returns:
    The instance containing the offset.

### toCharArray

    public char[] toCharArray()

  Get the character array of this instance. The reader classes access the data of each instance directly. This class only exists to manage the lifetime of the references to each instance. It is not intended to hide from the readers the fact that each instance contains a buffer of character data.
  Returns:
    The character data.

### setCharArray

    public void setCharArray(char[] data)

  Set the character array for this instance.
  Parameters:
    `data` - The character data.

### nextChunk

    public CharDataChunk nextChunk()

  Get the next chunk.
  Returns:
    The instance that follows this one in the list of chunks, or null if there is no such instance.

### clearPreviousChunk

    public boolean clearPreviousChunk()

  Clean the previous chunk reference. When a reader has reached a point where it knows that it will no longer call the addString, addSymbol, or append methods with an offset that is contained within a chunk that precedes this one, it will call this method to clear the reference from this chunk to the one preceding it. This allows the references between chunks to be dropped as we go and allow the unused instances to be placed upon the free list for reuse.
  Returns:
    `true` if we cleared the previous chunk pointer; otherwise `false` if the pointer is already null.

### releaseChunk

    public void releaseChunk()

  Release the reference to this chunk held by the reader that allocated this instance. Called at end of input to release the last chunk in the list used by the reader.

### addString

    public int addString(int offset,
                         int length)

  Add a range from this chunk to the `StringPool`
  Parameters:
    `offset` - the offset of the first character to be added
    `length` - the number of characters to add
  Returns:
    the `StringPool` handle that was added.

### addSymbol

    public int addSymbol(int offset,
                         int length,
                         int hashcode)

  Add a range from this chunk to the `StringPool` as a symbol
  Parameters:
    `offset` - the offset of the first character to be added
    `length` - the number of characters to add
    `hashcode` - hashcode to match to ensure uniqueness
  Returns:
    the `StringPool` handle that was added.

### append

    public void append(XMLEntityHandler.CharBuffer charBuffer,
                       int offset,
                       int length)

  Append data from a `CharBuffer` to this chunk.
  Parameters:
    `charBuffer` - the buffer to be appended.
    `offset` - the offset of the first character to be appended.
    `length` - the number of characters to append.

### toString

    public java.lang.String toString(int offset,
                                     int length)

  Return a range of characters as a `String`.
  Specified by:
    toString in interface StringPool.StringProducer
  Parameters:
    `offset` - the offset of the first character to convert.
    `length` - the number of characters to convert.
  Returns:
    the `String`

### releaseString

    public void releaseString(int offset,
                              int length)

  Release a string from this chunk
  Specified by:
    releaseString in interface StringPool.StringProducer
  Parameters:
    `offset` - the offset of the first character to be released
    `length` - the number of characters to release.

### equalsString

    public boolean equalsString(int offset,
                                int length,
                                char[] strChars,
                                int strOffset,
                                int strLength)

  Compare a range in this chunk and a range in a character array for equality
  Specified by:
    equalsString in interface StringPool.StringProducer
  Parameters:
    `offset` - the offset of the first character in the range in this chunk
    `length` - the number of characters in the range to compare
    `strChars` - the character array to compare
    `strOffset` - the offset of the first character in the range in strChars
    `strLength` - the number of characters to release.
  Returns:
    true if the ranges are character-wise equal, otherwise false.

Copyright © 1999-2001 Apache XML Project. All Rights Reserved.