Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1906)

Unified Diff: source/i18n/collationrootelements.h

Issue 1621843002: ICU 56 update step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@561
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/i18n/collationkeys.cpp ('k') | source/i18n/collationrootelements.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/i18n/collationrootelements.h
diff --git a/source/i18n/collationrootelements.h b/source/i18n/collationrootelements.h
index 1fa256194a53f29d474bad932c62fb197e275258..df2a13df243cef97f06d88c98f211e35236a47a0 100644
--- a/source/i18n/collationrootelements.h
+++ b/source/i18n/collationrootelements.h
@@ -189,16 +189,33 @@ public:
/**
* Returns the secondary weight after [p, s] where index=findPrimary(p)
* except use index=0 for p=0.
+ *
+ * Must return a weight for every root [p, s] as well as for every weight
+ * returned by getSecondaryBefore(). If p!=0 then s can be BEFORE_WEIGHT16.
+ *
+ * Exception: [0, 0] is handled by the CollationBuilder:
+ * Both its lower and upper boundaries are special.
*/
uint32_t getSecondaryAfter(int32_t index, uint32_t s) const;
/**
* Returns the tertiary weight after [p, s, t] where index=findPrimary(p)
* except use index=0 for p=0.
+ *
+ * Must return a weight for every root [p, s, t] as well as for every weight
+ * returned by getTertiaryBefore(). If s!=0 then t can be BEFORE_WEIGHT16.
+ *
+ * Exception: [0, 0, 0] is handled by the CollationBuilder:
+ * Both its lower and upper boundaries are special.
*/
uint32_t getTertiaryAfter(int32_t index, uint32_t s, uint32_t t) const;
private:
/**
+ * Returns the first secondary & tertiary weights for p where index=findPrimary(p)+1.
+ */
+ uint32_t getFirstSecTerForPrimary(int32_t index) const;
+
+ /**
* Finds the largest index i where elements[i]<=p.
* Requires first primary<=p<0xffffff00 (PRIMARY_SENTINEL).
* Does not require that p is a root collator primary.
@@ -216,15 +233,18 @@ private:
* See the comments on the IX_ constants.
*
* All other elements are a compact form of the root collator CEs
- * in collation order.
+ * in mostly collation order.
*
- * Primary weights have the SEC_TER_DELTA_FLAG flag not set.
- * A primary-weight element by itself represents a root CE
- * with Collation::COMMON_SEC_AND_TER_CE.
+ * A sequence of one or more root CEs with the same primary weight is stored as
+ * one element with the primary weight, with the SEC_TER_DELTA_FLAG flag not set,
+ * followed by elements with only the secondary/tertiary weights,
+ * each with that flag set.
+ * If the lowest secondary/tertiary combination is Collation::COMMON_SEC_AND_TER_CE,
+ * then the element for that combination is omitted.
*
- * If there are root CEs with the same primary but other secondary/tertiary weights,
- * then for each such CE there is an element with those secondary and tertiary weights,
- * and with the SEC_TER_DELTA_FLAG flag set.
+ * Note: If the first actual secondary/tertiary combination is higher than
+ * Collation::COMMON_SEC_AND_TER_CE (which is unusual),
+ * the runtime code will assume anyway that Collation::COMMON_SEC_AND_TER_CE is present.
*
* A range of only-primary CEs with a consistent "step" increment
* from each primary to the next may be stored as a range.
« no previous file with comments | « source/i18n/collationkeys.cpp ('k') | source/i18n/collationrootelements.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698