Class CollationFCD
java.lang.Object
org.graalvm.shadowed.com.ibm.icu.impl.coll.CollationFCD
Data and functions for the FCD check fast path.
The fast path looks at a pair of 16-bit code units and checks
whether there is an FCD boundary between them;
there is if the first unit has a trailing ccc=0 (!hasTccc(first))
or the second unit has a leading ccc=0 (!hasLccc(second)),
or both.
When the fast path finds a possible non-boundary,
then the FCD check slow path looks at the actual sequence of FCD values.
This is a pure optimization.
The fast path must at least find all possible non-boundaries.
If the fast path is too pessimistic, it costs performance.
For a pair of BMP characters, the fast path tests are precise (1 bit per character).
For a supplementary code point, the two units are its lead and trail surrogates.
We set hasTccc(lead)=true if any of its 1024 associated supplementary code points
has lccc!=0 or tccc!=0.
We set hasLccc(trail)=true for all trail surrogates.
As a result, we leave the fast path if the lead surrogate might start a
supplementary code point that is not FCD-inert.
(So the fast path need not detect that there is a surrogate pair,
nor look ahead to the next full code point.)
hasLccc(lead)=true if any of its 1024 associated supplementary code points
has lccc!=0, for fast boundary checking between BMP invalid input: '&' supplementary.
hasTccc(trail)=false:
It should only be tested for unpaired trail surrogates which are FCD-inert.
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
CollationFCD
public CollationFCD()
-
-
Method Details
-
hasLccc
public static boolean hasLccc(int c) -
hasTccc
public static boolean hasTccc(int c)
-