Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.apache.xerces.utils
Class CharDataChunk  view CharDataChunk download CharDataChunk.java

java.lang.Object
  extended byorg.apache.xerces.utils.CharDataChunk
All Implemented Interfaces:
StringPool.StringProducer

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
           
private  int fChunk
           
private  char[] fData
           
private static CharDataChunk fgFreeChunks
           
private  CharDataChunk fNextChunk
           
private  CharDataChunk fPreviousChunk
           
private  int fRefCount
           
private  StringPool fStringPool
           
 
Constructor Summary
private CharDataChunk()
           
 
Method Summary
private  void addRef()
           
 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(org.apache.xerces.readers.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.
private  void clearNextChunk()
           
 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
private  void removeRef()
           
 void setCharArray(char[] data)
          Set the character array for this instance.
private  void setNextChunk(CharDataChunk nextChunk)
           
 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.

See Also:
Constant Field Values

CHUNK_SIZE

public static final int CHUNK_SIZE
See Also:
Constant Field Values

CHUNK_MASK

public static final int CHUNK_MASK
See Also:
Constant Field Values

fStringPool

private StringPool fStringPool

fRefCount

private int fRefCount

fChunk

private int fChunk

fData

private char[] fData

fNextChunk

private CharDataChunk fNextChunk

fPreviousChunk

private CharDataChunk fPreviousChunk

fgFreeChunks

private static CharDataChunk fgFreeChunks
Constructor Detail

CharDataChunk

private CharDataChunk()
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.


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.


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.


setCharArray

public void setCharArray(char[] data)
Set the character array for this instance.


nextChunk

public CharDataChunk nextChunk()
Get the next chunk.


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.


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


addSymbol

public int addSymbol(int offset,
                     int length,
                     int hashcode)
Add a range from this chunk to the StringPool as a symbol


append

public void append(org.apache.xerces.readers.XMLEntityHandler.CharBuffer charBuffer,
                   int offset,
                   int length)
Append data from a CharBuffer to this chunk.


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

releaseString

public void releaseString(int offset,
                          int length)
Release a string from this chunk

Specified by:
releaseString in interface StringPool.StringProducer

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

addRef

private void addRef()

removeRef

private void removeRef()

clearNextChunk

private void clearNextChunk()

setNextChunk

private void setNextChunk(CharDataChunk nextChunk)