Top Fields Constructors Methods
com.ibm.icu.impl

public Class Trie2Writable

extends Trie2
Class Inheritance

Author
aheninger A Trie2Writable is a modifiable, or build-time Trie2. Functions for reading data from the Trie are all from class Trie2.

Field Summary

Modifier and TypeField and Description
private int[]
private int
private int
private int[]
private int[]
private int
private int
private boolean
private int[]
private static final int
UNEWTRIE2_DATA_0800_OFFSET

The start of data blocks for U+0800 and above.

private static final int
UNEWTRIE2_DATA_NULL_OFFSET

The null data block.

private static final int
UNEWTRIE2_DATA_START_OFFSET

The start of allocated data blocks.

private static final int
UNEWTRIE2_INDEX_2_NULL_OFFSET

The null index-2 block, following the gap in the index-2 table.

private static final int
UNEWTRIE2_INDEX_2_START_OFFSET

The start of allocated index-2 blocks.

private static final int
private static final int
private boolean
private static final int
UTRIE2_MAX_DATA_LENGTH

Maximum length of the runtime data array.

private static final int
UTRIE2_MAX_INDEX_LENGTH

Maximum length of the runtime index array.

Inherited from com.ibm.icu.impl.Trie2:
data16data32dataLengthdataNullOffseterrorValuefHashheaderhighStarthighValueIndexindexindexLengthinitialValueUNEWTRIE2_INDEX_1_LENGTHUNEWTRIE2_INDEX_GAP_LENGTHUNEWTRIE2_INDEX_GAP_OFFSETUNEWTRIE2_MAX_DATA_LENGTHUNEWTRIE2_MAX_INDEX_2_LENGTHUTRIE2_BAD_UTF8_DATA_OFFSETUTRIE2_CP_PER_INDEX_1_ENTRYUTRIE2_DATA_BLOCK_LENGTHUTRIE2_DATA_GRANULARITYUTRIE2_DATA_MASKUTRIE2_DATA_START_OFFSETUTRIE2_INDEX_1_OFFSETUTRIE2_INDEX_2_BLOCK_LENGTHUTRIE2_INDEX_2_BMP_LENGTHUTRIE2_INDEX_2_MASKUTRIE2_INDEX_2_OFFSETUTRIE2_INDEX_SHIFTUTRIE2_LSCP_INDEX_2_LENGTHUTRIE2_LSCP_INDEX_2_OFFSETUTRIE2_MAX_INDEX_1_LENGTHUTRIE2_OMITTED_BMP_INDEX_1_LENGTHUTRIE2_OPTIONS_VALUE_BITS_MASKUTRIE2_SHIFT_1UTRIE2_SHIFT_1_2UTRIE2_SHIFT_2UTRIE2_UTF8_2B_INDEX_2_LENGTHUTRIE2_UTF8_2B_INDEX_2_OFFSET

Constructor Summary

AccessConstructor and Description
public
Trie2Writable(int
the initial value that is set for all code points
initialValueP
,
int
the value for out-of-range code points and illegal UTF-8
errorValueP
)

Create a new, empty, writable Trie2.

public
Trie2Writable(Trie2
the source Trie2. Its contents will be copied into the new Trie2.
source
)

Create a new build time (modifiable) Trie2 whose contents are the same as the source Trie2.

Method Summary

Modifier and TypeMethod and Description
private int
allocDataBlock(int copyBlock)

private int
private void
private void
private void
private boolean
equal_int(int[] a, int s, int t, int length)

private void
fillBlock(int block, int start, int limit, int value, int initialValue, boolean overwrite)

initialValue is ignored if overwrite=true

private int
findHighStart(int highValue)

private int
findSameDataBlock(int dataLength, int otherBlock, int blockLength)

private int
findSameIndex2Block(int index2Length, int otherBlock)

private void
freeze(Trie2 dest, Trie2.ValueWidth valueBits)

public int

Returns:

the value
get
(int
the code point
codePoint
)

Implements abstract com.ibm.icu.impl.Trie2.get.

Get the value for a code point as stored in the Trie2.
private int
get(int c, boolean fromLSCP)

private int
getDataBlock(int c, boolean forLSCP)

No error checking for illegal arguments.

public int

Returns:

the value
getFromU16SingleLead
(char
the code point or lead surrogate value.
c
)

Implements abstract com.ibm.icu.impl.Trie2.getFromU16SingleLead.

Get a trie value for a UTF-16 code unit.
private int
getIndex2Block(int c, boolean forLSCP)

private void
init(int initialValueP, int errorValueP)

private boolean
isInNullBlock(int c, boolean forLSCP)

private boolean
isWritableBlock(int block)

private void
releaseDataBlock(int block)

public Trie2Writable
set(int
the code point
c
,
int
the value
value
)

Set a value for a code point.

private Trie2Writable
set(int c, boolean forLSCP, int value)

public Trie2Writable
setForLeadSurrogateCodeUnit(char
A UTF-16 code unit.
codeUnit
,
int
the value to be stored in the Trie2.
value
)

Set a value for a UTF-16 code unit.

private void
setIndex2Entry(int i2, int block)

public Trie2Writable
setRange(int
the first code point to get the value
start
,
int
the last code point to get the value (inclusive)
end
,
int
the value
value
,
boolean
flag for whether old non-initial values are to be overwritten
overwrite
)

Set a value in a range of code points [start..end].

public Trie2Writable
setRange(Trie2.Range
contains the range of code points and the value to be set.
range
,
boolean
flag for whether old non-initial values are to be overwritten
overwrite
)

Set the values from a Trie2.Range.

public Trie2_16
toTrie2_16()

Produce an optimized, read-only Trie2_16 from this writable Trie.

public Trie2_32
toTrie2_32()

Produce an optimized, read-only Trie2_32 from this writable Trie.

private void
private void
writeBlock(int block, int value)

Inherited from com.ibm.icu.impl.Trie2:
charSequenceIteratorcreateFromSerializedequalsgetVersionhashCodeiteratoriteratoriteratorForLeadSurrogateiteratorForLeadSurrogaterangeEndserializeHeader

Field Detail

databack to summary
private int[] data
dataCapacityback to summary
private int dataCapacity
firstFreeBlockback to summary
private int firstFreeBlock
index1back to summary
private int[] index1
index2back to summary
private int[] index2
index2Lengthback to summary
private int index2Length
index2NullOffsetback to summary
private int index2NullOffset

Hides com.ibm.icu.impl.Trie2.index2NullOffset.

isCompactedback to summary
private boolean isCompacted
mapback to summary
private int[] map
UNEWTRIE2_DATA_0800_OFFSETback to summary
private static final int UNEWTRIE2_DATA_0800_OFFSET

The start of data blocks for U+0800 and above. Below, compaction uses a block length of 64 for 2-byte UTF-8. From here on, compaction uses UTRIE2_DATA_BLOCK_LENGTH. Data values for 0x780 code points beyond ASCII.

UNEWTRIE2_DATA_NULL_OFFSETback to summary
private static final int UNEWTRIE2_DATA_NULL_OFFSET

The null data block. Length 64=0x40 even if UTRIE2_DATA_BLOCK_LENGTH is smaller, to work with 6-bit trail bytes from 2-byte UTF-8.

UNEWTRIE2_DATA_START_OFFSETback to summary
private static final int UNEWTRIE2_DATA_START_OFFSET

The start of allocated data blocks.

UNEWTRIE2_INDEX_2_NULL_OFFSETback to summary
private static final int UNEWTRIE2_INDEX_2_NULL_OFFSET

The null index-2 block, following the gap in the index-2 table.

UNEWTRIE2_INDEX_2_START_OFFSETback to summary
private static final int UNEWTRIE2_INDEX_2_START_OFFSET

The start of allocated index-2 blocks.

UNEWTRIE2_INITIAL_DATA_LENGTHback to summary
private static final int UNEWTRIE2_INITIAL_DATA_LENGTH
UNEWTRIE2_MEDIUM_DATA_LENGTHback to summary
private static final int UNEWTRIE2_MEDIUM_DATA_LENGTH
UTRIE2_DEBUGback to summary
private boolean UTRIE2_DEBUG
UTRIE2_MAX_DATA_LENGTHback to summary
private static final int UTRIE2_MAX_DATA_LENGTH

Maximum length of the runtime data array. Limited by 16-bit index values that are left-shifted by UTRIE2_INDEX_SHIFT, and by uint16_t UTrie2Header.shiftedDataLength.

UTRIE2_MAX_INDEX_LENGTHback to summary
private static final int UTRIE2_MAX_INDEX_LENGTH

Maximum length of the runtime index array. Limited by its own 16-bit index values, and by uint16_t UTrie2Header.indexLength. (The actual maximum length is lower, (0x110000>>UTRIE2_SHIFT_2)+UTRIE2_UTF8_2B_INDEX_2_LENGTH+UTRIE2_MAX_INDEX_1_LENGTH.)

Constructor Detail

Trie2Writableback to summary
public Trie2Writable(int initialValueP, int errorValueP)

Create a new, empty, writable Trie2. 32-bit data values are used.

Parameters
initialValueP:int

the initial value that is set for all code points

errorValueP:int

the value for out-of-range code points and illegal UTF-8

Trie2Writableback to summary
public Trie2Writable(Trie2 source)

Create a new build time (modifiable) Trie2 whose contents are the same as the source Trie2.

Parameters
source:Trie2

the source Trie2. Its contents will be copied into the new Trie2.

Method Detail

allocDataBlockback to summary
private int allocDataBlock(int copyBlock)
allocIndex2Blockback to summary
private int allocIndex2Block()
compactDataback to summary
private void compactData()
compactIndex2back to summary
private void compactIndex2()
compactTrieback to summary
private void compactTrie()
equal_intback to summary
private boolean equal_int(int[] a, int s, int t, int length)
fillBlockback to summary
private void fillBlock(int block, int start, int limit, int value, int initialValue, boolean overwrite)

initialValue is ignored if overwrite=true

ICU Status
Internal ICU component.
findHighStartback to summary
private int findHighStart(int highValue)
findSameDataBlockback to summary
private int findSameDataBlock(int dataLength, int otherBlock, int blockLength)
findSameIndex2Blockback to summary
private int findSameIndex2Block(int index2Length, int otherBlock)
freezeback to summary
private void freeze(Trie2 dest, Trie2.ValueWidth valueBits)
getback to summary
public int get(int codePoint)

Implements abstract com.ibm.icu.impl.Trie2.get.

Get the value for a code point as stored in the Trie2.

Parameters
codePoint:int

the code point

Returns:int

the value

Annotations
@Override
getback to summary
private int get(int c, boolean fromLSCP)
getDataBlockback to summary
private int getDataBlock(int c, boolean forLSCP)

No error checking for illegal arguments.

ICU Status
Internal ICU component.
getFromU16SingleLeadback to summary
public int getFromU16SingleLead(char c)

Implements abstract com.ibm.icu.impl.Trie2.getFromU16SingleLead.

Get a trie value for a UTF-16 code unit. This function returns the same value as get() if the input character is outside of the lead surrogate range There are two values stored in a Trie for inputs in the lead surrogate range. This function returns the alternate value, while Trie2.get() returns the main value.

Parameters
c:char

the code point or lead surrogate value.

Returns:int

the value

Annotations
@Override
getIndex2Blockback to summary
private int getIndex2Block(int c, boolean forLSCP)
initback to summary
private void init(int initialValueP, int errorValueP)
isInNullBlockback to summary
private boolean isInNullBlock(int c, boolean forLSCP)
isWritableBlockback to summary
private boolean isWritableBlock(int block)
releaseDataBlockback to summary
private void releaseDataBlock(int block)
setback to summary
public Trie2Writable set(int c, int value)

Set a value for a code point.

Parameters
c:int

the code point

value:int

the value

setback to summary
private Trie2Writable set(int c, boolean forLSCP, int value)
setForLeadSurrogateCodeUnitback to summary
public Trie2Writable setForLeadSurrogateCodeUnit(char codeUnit, int value)

Set a value for a UTF-16 code unit. Note that a Trie2 stores separate values for supplementary code points in the lead surrogate range (accessed via the plain set() and get() interfaces) and for lead surrogate code units. The lead surrogate code unit values are set via this function and read by the function getFromU16SingleLead(). For code units outside of the lead surrogate range, this function behaves identically to set().

Parameters
codeUnit:char

A UTF-16 code unit.

value:int

the value to be stored in the Trie2.

setIndex2Entryback to summary
private void setIndex2Entry(int i2, int block)
setRangeback to summary
public Trie2Writable setRange(int start, int end, int value, boolean overwrite)

Set a value in a range of code points [start..end]. All code points c with start<=c<=end will get the value if overwrite is true or if the old value is the initial value.

Parameters
start:int

the first code point to get the value

end:int

the last code point to get the value (inclusive)

value:int

the value

overwrite:boolean

flag for whether old non-initial values are to be overwritten

setRangeback to summary
public Trie2Writable setRange(Trie2.Range range, boolean overwrite)

Set the values from a Trie2.Range. All code points within the range will get the value if overwrite is true or if the old value is the initial value. Ranges with the lead surrogate flag set will set the alternate lead-surrogate values in the Trie, rather than the code point values. This function is intended to work with the ranges produced when iterating the contents of a source Trie.

Parameters
range:Trie2.Range

contains the range of code points and the value to be set.

overwrite:boolean

flag for whether old non-initial values are to be overwritten

toTrie2_16back to summary
public Trie2_16 toTrie2_16()

Produce an optimized, read-only Trie2_16 from this writable Trie. The data values outside of the range that will fit in a 16 bit unsigned value will be truncated.

toTrie2_32back to summary
public Trie2_32 toTrie2_32()

Produce an optimized, read-only Trie2_32 from this writable Trie.

uncompactback to summary
private void uncompact()
writeBlockback to summary
private void writeBlock(int block, int value)