Package com.ibm.icu.impl.locale
Class LocaleDistance
- java.lang.Object
-
- com.ibm.icu.impl.locale.LocaleDistance
-
public class LocaleDistance extends java.lang.Object
Offline-built data for LocaleMatcher. Mostly but not only the data for mapping locales to their maximized forms.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
LocaleDistance.Data
-
Field Summary
Fields Modifier and Type Field Description private static int
ABOVE_THRESHOLD
private static boolean
DEBUG_OUTPUT
private int
defaultDemotionPerDesiredLocale
private int
defaultLanguageDistance
private int
defaultRegionDistance
private int
defaultScriptDistance
private static int
DISTANCE_FRACTION_MASK
private static int
DISTANCE_INT_SHIFT
private static int
DISTANCE_IS_FINAL
Distance value bit flag, set by trieNext().private static int
DISTANCE_IS_FINAL_OR_SKIP_SCRIPT
private static int
DISTANCE_MASK
private static int
DISTANCE_SHIFT
static int
DISTANCE_SKIP_SCRIPT
Distance value bit flag, set by the builder.static int
END_OF_SUBTAG
Bit flag used on the last character of a subtag in the trie.private static int
INDEX_NEG_1
private static int
INDEX_SHIFT
static LocaleDistance
INSTANCE
static int
IX_DEF_LANG_DISTANCE
static int
IX_DEF_REGION_DISTANCE
static int
IX_DEF_SCRIPT_DISTANCE
static int
IX_LIMIT
static int
IX_MIN_REGION_DISTANCE
private int
minRegionDistance
private java.util.Set<LSR>
paradigmLSRs
Used to get the paradigm region for a cluster, if there is one.private java.lang.String[]
partitionArrays
private byte[]
regionToPartitionsIndex
Maps each region to zero or more single-character partitions.private BytesTrie
trie
-
Constructor Summary
Constructors Modifier Constructor Description private
LocaleDistance(LocaleDistance.Data data)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getBestIndexAndDistance(LSR desired, LSR[] supportedLSRs, int supportedLSRsLength, int shiftedThreshold, LocaleMatcher.FavorSubtag favorSubtag, LocaleMatcher.Direction direction)
Finds the supported LSR with the smallest distance from the desired one.int
getDefaultDemotionPerDesiredLocale()
(package private) int
getDefaultRegionDistance()
int
getDefaultScriptDistance()
private static int
getDesSuppScriptDistance(BytesTrie iter, long startState, java.lang.String desired, java.lang.String supported)
static double
getDistanceDouble(int indexAndDistance)
static int
getDistanceFloor(int indexAndDistance)
private static int
getFallbackRegionDistance(BytesTrie iter, long startState)
static int
getIndex(int indexAndDistance)
private static int
getRegionPartitionsDistance(BytesTrie iter, long startState, java.lang.String desiredPartitions, java.lang.String supportedPartitions, int threshold)
static int
getShiftedDistance(int indexAndDistance)
private boolean
isMatch(LSR desired, LSR supported, int shiftedThreshold, LocaleMatcher.FavorSubtag favorSubtag)
boolean
isParadigmLSR(LSR lsr)
private java.lang.String
partitionsForRegion(LSR lsr)
static int
shiftDistance(int distance)
int
testOnlyDistance(ULocale desired, ULocale supported, int threshold, LocaleMatcher.FavorSubtag favorSubtag)
java.util.Map<java.lang.String,java.lang.Integer>
testOnlyGetDistanceTable()
void
testOnlyPrintDistanceTable()
java.lang.String
toString()
private static int
trieNext(BytesTrie iter, java.lang.String s, boolean wantValue)
-
-
-
Field Detail
-
END_OF_SUBTAG
public static final int END_OF_SUBTAG
Bit flag used on the last character of a subtag in the trie. Must be set consistently by the builder and the lookup code.- See Also:
- Constant Field Values
-
DISTANCE_SKIP_SCRIPT
public static final int DISTANCE_SKIP_SCRIPT
Distance value bit flag, set by the builder.- See Also:
- Constant Field Values
-
DISTANCE_IS_FINAL
private static final int DISTANCE_IS_FINAL
Distance value bit flag, set by trieNext().- See Also:
- Constant Field Values
-
DISTANCE_IS_FINAL_OR_SKIP_SCRIPT
private static final int DISTANCE_IS_FINAL_OR_SKIP_SCRIPT
- See Also:
- Constant Field Values
-
DISTANCE_SHIFT
private static final int DISTANCE_SHIFT
- See Also:
- Constant Field Values
-
DISTANCE_FRACTION_MASK
private static final int DISTANCE_FRACTION_MASK
- See Also:
- Constant Field Values
-
DISTANCE_INT_SHIFT
private static final int DISTANCE_INT_SHIFT
- See Also:
- Constant Field Values
-
INDEX_SHIFT
private static final int INDEX_SHIFT
- See Also:
- Constant Field Values
-
DISTANCE_MASK
private static final int DISTANCE_MASK
- See Also:
- Constant Field Values
-
INDEX_NEG_1
private static final int INDEX_NEG_1
- See Also:
- Constant Field Values
-
IX_DEF_LANG_DISTANCE
public static final int IX_DEF_LANG_DISTANCE
- See Also:
- Constant Field Values
-
IX_DEF_SCRIPT_DISTANCE
public static final int IX_DEF_SCRIPT_DISTANCE
- See Also:
- Constant Field Values
-
IX_DEF_REGION_DISTANCE
public static final int IX_DEF_REGION_DISTANCE
- See Also:
- Constant Field Values
-
IX_MIN_REGION_DISTANCE
public static final int IX_MIN_REGION_DISTANCE
- See Also:
- Constant Field Values
-
IX_LIMIT
public static final int IX_LIMIT
- See Also:
- Constant Field Values
-
ABOVE_THRESHOLD
private static final int ABOVE_THRESHOLD
- See Also:
- Constant Field Values
-
DEBUG_OUTPUT
private static final boolean DEBUG_OUTPUT
- See Also:
- Constant Field Values
-
trie
private final BytesTrie trie
-
regionToPartitionsIndex
private final byte[] regionToPartitionsIndex
Maps each region to zero or more single-character partitions.
-
partitionArrays
private final java.lang.String[] partitionArrays
-
paradigmLSRs
private final java.util.Set<LSR> paradigmLSRs
Used to get the paradigm region for a cluster, if there is one.
-
defaultLanguageDistance
private final int defaultLanguageDistance
-
defaultScriptDistance
private final int defaultScriptDistance
-
defaultRegionDistance
private final int defaultRegionDistance
-
minRegionDistance
private final int minRegionDistance
-
defaultDemotionPerDesiredLocale
private final int defaultDemotionPerDesiredLocale
-
INSTANCE
public static final LocaleDistance INSTANCE
-
-
Constructor Detail
-
LocaleDistance
private LocaleDistance(LocaleDistance.Data data)
-
-
Method Detail
-
shiftDistance
public static final int shiftDistance(int distance)
-
getShiftedDistance
public static final int getShiftedDistance(int indexAndDistance)
-
getDistanceDouble
public static final double getDistanceDouble(int indexAndDistance)
-
getDistanceFloor
public static final int getDistanceFloor(int indexAndDistance)
-
getIndex
public static final int getIndex(int indexAndDistance)
-
testOnlyDistance
public int testOnlyDistance(ULocale desired, ULocale supported, int threshold, LocaleMatcher.FavorSubtag favorSubtag)
-
getBestIndexAndDistance
public int getBestIndexAndDistance(LSR desired, LSR[] supportedLSRs, int supportedLSRsLength, int shiftedThreshold, LocaleMatcher.FavorSubtag favorSubtag, LocaleMatcher.Direction direction)
Finds the supported LSR with the smallest distance from the desired one. Equivalent LSR subtags must be normalized into a canonical form.Returns the index of the lowest-distance supported LSR in the high bits (negative if none has a distance below the threshold), and its distance (0..ABOVE_THRESHOLD) in the low bits.
-
isMatch
private boolean isMatch(LSR desired, LSR supported, int shiftedThreshold, LocaleMatcher.FavorSubtag favorSubtag)
-
getDesSuppScriptDistance
private static final int getDesSuppScriptDistance(BytesTrie iter, long startState, java.lang.String desired, java.lang.String supported)
-
getRegionPartitionsDistance
private static final int getRegionPartitionsDistance(BytesTrie iter, long startState, java.lang.String desiredPartitions, java.lang.String supportedPartitions, int threshold)
-
getFallbackRegionDistance
private static final int getFallbackRegionDistance(BytesTrie iter, long startState)
-
trieNext
private static final int trieNext(BytesTrie iter, java.lang.String s, boolean wantValue)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
partitionsForRegion
private java.lang.String partitionsForRegion(LSR lsr)
-
isParadigmLSR
public boolean isParadigmLSR(LSR lsr)
-
getDefaultScriptDistance
public int getDefaultScriptDistance()
-
getDefaultRegionDistance
int getDefaultRegionDistance()
-
getDefaultDemotionPerDesiredLocale
public int getDefaultDemotionPerDesiredLocale()
-
testOnlyGetDistanceTable
public java.util.Map<java.lang.String,java.lang.Integer> testOnlyGetDistanceTable()
-
testOnlyPrintDistanceTable
public void testOnlyPrintDistanceTable()
-
-