Index: source/i18n/collationfastlatin.h |
diff --git a/source/i18n/collationfastlatin.h b/source/i18n/collationfastlatin.h |
index 4582eb1d10baa6fb58cdfc34c5d71d33991f4c4b..6a25c6692c901ded1d8022e277bcb4827aad3ee3 100644 |
--- a/source/i18n/collationfastlatin.h |
+++ b/source/i18n/collationfastlatin.h |
@@ -1,6 +1,6 @@ |
/* |
******************************************************************************* |
-* Copyright (C) 2013-2014, International Business Machines |
+* Copyright (C) 2013-2015, International Business Machines |
* Corporation and others. All Rights Reserved. |
******************************************************************************* |
* collationfastlatin.h |
@@ -31,7 +31,7 @@ public: |
* When the major version number of the main data format changes, |
* we can reset this fast Latin version to 1. |
*/ |
- static const uint16_t VERSION = 1; |
+ static const uint16_t VERSION = 2; |
static const int32_t LATIN_MAX = 0x17f; |
static const int32_t LATIN_LIMIT = LATIN_MAX + 1; |
@@ -252,7 +252,7 @@ private: |
/* |
* Format of the CollationFastLatin data table. |
- * CollationFastLatin::VERSION = 1. |
+ * CollationFastLatin::VERSION = 2. |
* |
* This table contains data for a Latin-text collation fastpath. |
* The data is stored as an array of uint16_t which contains the following parts. |
@@ -262,6 +262,12 @@ private: |
* 7..0: length of the header |
* |
* uint16_t varTops[header length - 1] |
+ * Version 2: |
+ * varTops[m] is the highest CollationFastLatin long-primary weight |
+ * of supported maxVariable group m |
+ * (special reorder group space, punct, symbol, currency). |
+ * |
+ * Version 1: |
* Each of these values maps the variable top lead byte of a supported maxVariable group |
* to the highest CollationFastLatin long-primary weight. |
* The values are stored in ascending order. |
@@ -293,6 +299,16 @@ private: |
* Each list is terminated by an entry with CONTR_CHAR_MASK. |
* Each list starts with such an entry which also contains the default result |
* for when there is no contraction match. |
+ * |
+ * ----------------- |
+ * Changes for version 2 (ICU 55) |
+ * |
+ * Special reorder groups do not necessarily start on whole primary lead bytes any more. |
+ * Therefore, the varTops data has a new format: |
+ * Version 1 stored the lead bytes of the highest root primaries for |
+ * the maxVariable-supported special reorder groups. |
+ * Now the top 16 bits would need to be stored, |
+ * and it is simpler to store only the fast-Latin weights. |
*/ |
U_NAMESPACE_END |