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.
Modifier and Type | Class and Description |
---|---|
pack-priv class |
Modifier and Type | Field and Description |
---|---|
pack-priv static final int | |
pack-priv ChunkedIntArray. | |
pack-priv final int[] | |
pack-priv int | |
pack-priv static final int | |
pack-priv static final int | |
pack-priv final int |
Access | Constructor and Description |
---|---|
pack-priv |
Modifier and Type | Method and Description |
---|---|
pack-priv int | Returns: the index at which this record was inserted.Append a 4-integer record to the CIA, starting with record 1. |
pack-priv void | |
pack-priv int | readEntry(int
int Record number position, int int Column number 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). |
pack-priv void | readSlot(int
int Record number position, int[] int[] Integer array provided by user, must be large enough
to hold a complete record. buffer)Retrieve the contents of a record into a user-supplied buffer array. |
pack-priv int | |
pack-priv int | |
pack-priv void | writeEntry(int
int Record number position, int int Column number offset, int int New contents value)Overwrite the integer found at a specific record and column. |
pack-priv void | writeSlot(int
integer Record number position, int int w0, int int w1, int int w2, int int w3)Overwrite an entire (4-integer) record at the specified index. |
chunkalloc | back to summary |
---|---|
pack-priv static final int chunkalloc |
chunks | back to summary |
---|---|
pack-priv ChunkedIntArray. |
fastArray | back to summary |
---|---|
pack-priv final int[] fastArray |
lastUsed | back to summary |
---|---|
pack-priv int lastUsed |
lowbits | back to summary |
---|---|
pack-priv static final int lowbits |
lowmask | back to summary |
---|---|
pack-priv static final int lowmask |
slotsize | back to summary |
---|---|
pack-priv final int slotsize |
ChunkedIntArray | back to summary |
---|---|
pack-priv ChunkedIntArray(int slotsize) 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 | back to summary |
---|---|
pack-priv int appendSlot(int w0, int w1, int w2, int w3) 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.)
|
discardLast | back to summary |
---|---|
pack-priv void discardLast() 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 | back to summary |
---|---|
pack-priv int readEntry(int position, int offset) throws ArrayIndexOutOfBoundsException 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).
|
readSlot | back to summary |
---|---|
pack-priv void readSlot(int position, int[] buffer) 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.
|
slotsUsed | back to summary |
---|---|
pack-priv int slotsUsed()
|
specialFind | back to summary |
---|---|
pack-priv int specialFind(int startPos, int position) |
writeEntry | back to summary |
---|---|
pack-priv void writeEntry(int position, int offset, int value) throws ArrayIndexOutOfBoundsException 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
|
writeSlot | back to summary |
---|---|
pack-priv void writeSlot(int position, int w0, int w1, int w2, int w3) Overwrite an entire (4-integer) record at the specified index. Mostly used to create record 0, the Document node.
|
Modifier and Type | Field and Description |
---|---|
pack-priv final int | |
pack-priv int[][] | |
pack-priv int | |
pack-priv int |
Access | Constructor and Description |
---|---|
pack-priv |
Modifier and Type | Method and Description |
---|---|
pack-priv void | |
pack-priv final int[] | |
pack-priv final int |
BLOCKSIZE | back to summary |
---|---|
pack-priv final int BLOCKSIZE |
m_map | back to summary |
---|---|
pack-priv int[][] m_map |
m_mapSize | back to summary |
---|---|
pack-priv int m_mapSize |
pos | back to summary |
---|---|
pack-priv int pos |
ChunksVector | back to summary |
---|---|
pack-priv ChunksVector() |
addElement | back to summary |
---|---|
pack-priv void addElement(int[] value) |
elementAt | back to summary |
---|---|
pack-priv final int[] elementAt(int pos) |
size | back to summary |
---|---|
pack-priv final int size() |