| java.lang.Object org.apache.xml.dtm.ref.ChunkedIntArray
ChunkedIntArray | final class ChunkedIntArray (Code) | | ChunkedIntArray is an extensible array of blocks of integers.
(I'd consider Vector, but it's unable to handle integers except by
turning them into Objects.)
Making this a separate class means some call-and-return overhead. But
doing it all inline tends to be fragile and expensive in coder time,
not to mention driving up code size. If you want to inline it, feel free.
The Java text suggest that private and Final methods may be inlined,
and one can argue that this beast need not be made subclassable...
%REVIEW% This has strong conceptual overlap with the IntVector class.
It would probably be a good thing to merge the two, when time permits.
|
Inner Class :class ChunksVector | |
Constructor Summary | |
| ChunkedIntArray(int slotsize) Create a new CIA with specified record size. |
Method Summary | |
int | appendSlot(int w0, int w1, int w2, int w3) Append a 4-integer record to the CIA, starting with record 1. | void | discardLast() Disard the highest-numbered record. | int | readEntry(int position, int offset) Retrieve an integer from the CIA by record number and column within
the record, both 0-based (though position 0 is reserved for special
purposes). | void | readSlot(int position, int[] buffer) Retrieve the contents of a record into a user-supplied buffer array. | int | slotsUsed() | int | specialFind(int startPos, int position) | void | writeEntry(int position, int offset, int value) Overwrite the integer found at a specific record and column. | void | writeSlot(int position, int w0, int w1, int w2, int w3) Overwrite an entire (4-integer) record at the specified index. |
chunkalloc | final static int chunkalloc(Code) | | |
chunks | ChunksVector chunks(Code) | | |
fastArray | final int fastArray(Code) | | |
lowbits | final static int lowbits(Code) | | |
lowmask | final static int lowmask(Code) | | |
slotsize | final int slotsize(Code) | | |
ChunkedIntArray | ChunkedIntArray(int slotsize)(Code) | | Create a new CIA with specified record size. Currently record size MUST
be a power of two... and in fact is hardcoded to 4.
|
appendSlot | int appendSlot(int w0, int w1, int w2, int w3)(Code) | | Append a 4-integer record to the CIA, starting with record 1. (Since
arrays are initialized to all-0, 0 has been reserved as the "unknown"
value in DTM.)
the index at which this record was inserted. |
discardLast | void discardLast()(Code) | | Disard the highest-numbered record. This is used in the string-buffer
CIA; when only a single characters() chunk has been recieved, its index
is moved into the Text node rather than being referenced by indirection
into the text accumulator.
|
readEntry | int readEntry(int position, int offset) throws ArrayIndexOutOfBoundsException(Code) | | Retrieve an integer from the CIA by record number and column within
the record, both 0-based (though position 0 is reserved for special
purposes).
Parameters: position - int Record number Parameters: slotpos - int Column number |
readSlot | void readSlot(int position, int[] buffer)(Code) | | Retrieve the contents of a record into a user-supplied buffer array.
Used to reduce addressing overhead when code will access several
columns of the record.
Parameters: position - int Record number Parameters: buffer - int[] Integer array provided by user, must be large enoughto hold a complete record. |
slotsUsed | int slotsUsed()(Code) | | int index of highest-numbered record currently in use |
specialFind | int specialFind(int startPos, int position)(Code) | | |
writeEntry | void writeEntry(int position, int offset, int value) throws ArrayIndexOutOfBoundsException(Code) | | Overwrite the integer found at a specific record and column.
Used to back-patch existing records, most often changing their
"next sibling" reference from 0 (unknown) to something meaningful
Parameters: position - int Record number Parameters: offset - int Column number Parameters: value - int New contents |
writeSlot | void writeSlot(int position, int w0, int w1, int w2, int w3)(Code) | | Overwrite an entire (4-integer) record at the specified index.
Mostly used to create record 0, the Document node.
Parameters: position - integer Record number Parameters: w0 - int Parameters: w1 - int Parameters: w2 - int Parameters: w3 - int |
|
|