Class CodePointTrie

  • All Implemented Interfaces:
    java.lang.Iterable<CodePointMap.Range>
    Direct Known Subclasses:
    CodePointTrie.Fast, CodePointTrie.Small

    public abstract class CodePointTrie
    extends CodePointMap
    Immutable Unicode code point trie. Fast, reasonably compact, map from Unicode code points (U+0000..U+10FFFF) to integer values. For details see http://site.icu-project.org/design/struct/utrie

    This class is not intended for public subclassing.

    See Also:
    MutableCodePointTrie
    • Field Detail

      • data

        @Deprecated
        protected final com.ibm.icu.util.CodePointTrie.Data data
        Deprecated.
        This API is ICU internal only.
      • dataLength

        @Deprecated
        protected final int dataLength
        Deprecated.
        This API is ICU internal only.
      • highStart

        @Deprecated
        protected final int highStart
        Deprecated.
        This API is ICU internal only.
        Start of the last range which ends at U+10FFFF.
    • Method Detail

      • getType

        public abstract CodePointTrie.Type getType()
        Returns the trie type.
        Returns:
        the trie type
      • getValueWidth

        public final CodePointTrie.ValueWidth getValueWidth()
        Returns the number of bits in a trie data value.
        Returns:
        the number of bits in a trie data value
      • get

        public int get​(int c)
        Returns the value for a code point as stored in the map, with range checking. Returns an implementation-defined error value if c is not in the range 0..U+10FFFF.
        Specified by:
        get in class CodePointMap
        Parameters:
        c - the code point
        Returns:
        the map value, or an implementation-defined error value if the code point is not in the range 0..U+10FFFF
      • asciiGet

        public final int asciiGet​(int c)
        Returns a trie value for an ASCII code point, without range checking.
        Parameters:
        c - the input code point; must be U+0000..U+007F
        Returns:
        The ASCII code point's trie value.
      • getRange

        public final boolean getRange​(int start,
                                      CodePointMap.ValueFilter filter,
                                      CodePointMap.Range range)
        Sets the range object to a range of code points beginning with the start parameter. The range start is the same as the start input parameter (even if there are preceding code points that have the same value). The range end is the last code point such that all those from start to there have the same value. Returns false if start is not 0..U+10FFFF. Can be used to efficiently iterate over all same-value ranges in a map. (This is normally faster than iterating over code points and get()ting each value, but may be much slower than a data structure that stores ranges directly.)

        If the CodePointMap.ValueFilter parameter is not null, then the value to be delivered is passed through that filter, and the return value is the end of the range where all values are modified to the same actual value. The value is unchanged if that parameter is null.

        Example:

         int start = 0;
         CodePointMap.Range range = new CodePointMap.Range();
         while (map.getRange(start, null, range)) {
             int end = range.getEnd();
             int value = range.getValue();
             // Work with the range start..end and its value.
             start = end + 1;
         }
         
        Specified by:
        getRange in class CodePointMap
        Parameters:
        start - range start
        filter - an object that may modify the map data value, or null if the values from the map are to be used unmodified
        range - the range object that will be set to the code point range and value
        Returns:
        true if start is 0..U+10FFFF; otherwise no new range is fetched
      • fastIndex

        @Deprecated
        protected final int fastIndex​(int c)
        Deprecated.
        This API is ICU internal only.
      • smallIndex

        @Deprecated
        protected final int smallIndex​(CodePointTrie.Type type,
                                       int c)
        Deprecated.
        This API is ICU internal only.
      • cpIndex

        @Deprecated
        protected abstract int cpIndex​(int c)
        Deprecated.
        This API is ICU internal only.