Class CollationSettings

  • All Implemented Interfaces:
    java.lang.Cloneable

    public final class CollationSettings
    extends SharedObject
    Collation settings/options/attributes. These are the values that can be changed via API.
    • Field Detail

      • CHECK_FCD

        public static final int CHECK_FCD
        Options bit 0: Perform the FCD check on the input text and deliver normalized text.
        See Also:
        Constant Field Values
      • NUMERIC

        public static final int NUMERIC
        Options bit 1: Numeric collation. Also known as CODAN = COllate Digits As Numbers. Treat digit sequences as numbers with CE sequences in numeric order, rather than returning a normal CE for each digit.
        See Also:
        Constant Field Values
      • SHIFTED

        static final int SHIFTED
        "Shifted" alternate handling, see ALTERNATE_MASK.
        See Also:
        Constant Field Values
      • ALTERNATE_MASK

        static final int ALTERNATE_MASK
        Options bits 3..2: Alternate-handling mask. 0 for non-ignorable. Reserve values 8 and 0xc for shift-trimmed and blanked.
        See Also:
        Constant Field Values
      • MAX_VARIABLE_SHIFT

        static final int MAX_VARIABLE_SHIFT
        Options bits 6..4: The 3-bit maxVariable value bit field is shifted by this value.
        See Also:
        Constant Field Values
      • MAX_VARIABLE_MASK

        static final int MAX_VARIABLE_MASK
        maxVariable options bit mask before shifting.
        See Also:
        Constant Field Values
      • UPPER_FIRST

        static final int UPPER_FIRST
        Options bit 8: Sort uppercase first if caseLevel or caseFirst is on.
        See Also:
        Constant Field Values
      • CASE_FIRST

        public static final int CASE_FIRST
        Options bit 9: Keep the case bits in the tertiary weight (they trump other tertiary values) unless case level is on (when they are *moved* into the separate case level). By default, the case bits are removed from the tertiary weight (ignored). When CASE_FIRST is off, UPPER_FIRST must be off too, corresponding to the tri-value UCOL_CASE_FIRST attribute: UCOL_OFF vs. UCOL_LOWER_FIRST vs. UCOL_UPPER_FIRST.
        See Also:
        Constant Field Values
      • CASE_FIRST_AND_UPPER_MASK

        public static final int CASE_FIRST_AND_UPPER_MASK
        Options bit mask for caseFirst and upperFirst, before shifting. Same value as caseFirst==upperFirst.
        See Also:
        Constant Field Values
      • CASE_LEVEL

        public static final int CASE_LEVEL
        Options bit 10: Insert the case level between the secondary and tertiary levels.
        See Also:
        Constant Field Values
      • BACKWARD_SECONDARY

        public static final int BACKWARD_SECONDARY
        Options bit 11: Compare secondary weights backwards. ("French secondary")
        See Also:
        Constant Field Values
      • STRENGTH_SHIFT

        static final int STRENGTH_SHIFT
        Options bits 15..12: The 4-bit strength value bit field is shifted by this value. It is the top used bit field in the options. (No need to mask after shifting.)
        See Also:
        Constant Field Values
      • STRENGTH_MASK

        static final int STRENGTH_MASK
        Strength options bit mask before shifting.
        See Also:
        Constant Field Values
      • options

        public int options
        CHECK_FCD etc.
      • variableTop

        public long variableTop
        Variable-top primary weight.
      • reorderTable

        public byte[] reorderTable
        256-byte table for reordering permutation of primary lead bytes; null if no reordering. A 0 entry at a non-zero index means that the primary lead byte is "split" (there are different offsets for primaries that share that lead byte) and the reordering offset must be determined via the reorderRanges.
      • minHighNoReorder

        long minHighNoReorder
        Limit of last reordered range. 0 if no reordering or no split bytes.
      • reorderRanges

        long[] reorderRanges
        Primary-weight ranges for script reordering, to be used by reorder(p) for split-reordered primary lead bytes.

        Each entry is a (limit, offset) pair. The upper 16 bits of the entry are the upper 16 bits of the exclusive primary limit of a range. Primaries between the previous limit and this one have their lead bytes modified by the signed offset (-0xff..+0xff) stored in the lower 16 bits.

        CollationData.makeReorderRanges() writes a full list where the first range (at least for terminators and separators) has a 0 offset. The last range has a non-zero offset. minHighNoReorder is set to the limit of that last range.

        In the settings object, the initial ranges before the first split lead byte are omitted for efficiency; they are handled by reorder(p) via the reorderTable. If there are no split-reordered lead bytes, then no ranges are needed.

      • reorderCodes

        public int[] reorderCodes
        Array of reorder codes; ignored if length == 0.
      • EMPTY_INT_ARRAY

        private static final int[] EMPTY_INT_ARRAY
      • fastLatinOptions

        public int fastLatinOptions
        Options for CollationFastLatin. Negative if disabled.
      • fastLatinPrimaries

        public char[] fastLatinPrimaries
    • Constructor Detail

      • CollationSettings

        CollationSettings()
    • Method Detail

      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • resetReordering

        public void resetReordering()
      • aliasReordering

        void aliasReordering​(CollationData data,
                             int[] codesAndRanges,
                             int codesLength,
                             byte[] table)
      • setReordering

        public void setReordering​(CollationData data,
                                  int[] codes)
      • setReorderArrays

        private void setReorderArrays​(int[] codes,
                                      int[] ranges,
                                      int rangesStart,
                                      int rangesLength,
                                      byte[] table)
      • setReorderRanges

        private void setReorderRanges​(int[] ranges,
                                      int rangesStart,
                                      int rangesLength)
      • hasReordering

        public boolean hasReordering()
      • reorderTableHasSplitBytes

        private static boolean reorderTableHasSplitBytes​(byte[] table)
      • reorder

        public long reorder​(long p)
      • reorderEx

        private long reorderEx​(long p)
      • setStrength

        public void setStrength​(int value)
      • setStrengthDefault

        public void setStrengthDefault​(int defaultOptions)
      • getStrength

        static int getStrength​(int options)
      • getStrength

        public int getStrength()
      • setFlag

        public void setFlag​(int bit,
                            boolean value)
        Sets the options bit for an on/off attribute.
      • setFlagDefault

        public void setFlagDefault​(int bit,
                                   int defaultOptions)
      • getFlag

        public boolean getFlag​(int bit)
      • setCaseFirst

        public void setCaseFirst​(int value)
      • setCaseFirstDefault

        public void setCaseFirstDefault​(int defaultOptions)
      • getCaseFirst

        public int getCaseFirst()
      • setAlternateHandlingShifted

        public void setAlternateHandlingShifted​(boolean value)
      • setAlternateHandlingDefault

        public void setAlternateHandlingDefault​(int defaultOptions)
      • getAlternateHandling

        public boolean getAlternateHandling()
      • setMaxVariable

        public void setMaxVariable​(int value,
                                   int defaultOptions)
      • getMaxVariable

        public int getMaxVariable()
      • isTertiaryWithCaseBits

        static boolean isTertiaryWithCaseBits​(int options)
        Include case bits in the tertiary level if caseLevel=off and caseFirst!=off.
      • getTertiaryMask

        static int getTertiaryMask​(int options)
      • sortsTertiaryUpperCaseFirst

        static boolean sortsTertiaryUpperCaseFirst​(int options)
      • dontCheckFCD

        public boolean dontCheckFCD()
      • hasBackwardSecondary

        boolean hasBackwardSecondary()
      • isNumeric

        public boolean isNumeric()