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

Side by Side Diff: source/i18n/collationdatabuilder.cpp

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 unified diff | Download patch
« no previous file with comments | « source/i18n/collationdata.cpp ('k') | source/i18n/collationdatareader.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 ******************************************************************************* 2 *******************************************************************************
3 * Copyright (C) 2012-2014, International Business Machines 3 * Copyright (C) 2012-2015, International Business Machines
4 * Corporation and others. All Rights Reserved. 4 * Corporation and others. All Rights Reserved.
5 ******************************************************************************* 5 *******************************************************************************
6 * collationdatabuilder.cpp 6 * collationdatabuilder.cpp
7 * 7 *
8 * (replaced the former ucol_elm.cpp) 8 * (replaced the former ucol_elm.cpp)
9 * 9 *
10 * created on: 2012apr01 10 * created on: 2012apr01
11 * created by: Markus W. Scherer 11 * created by: Markus W. Scherer
12 */ 12 */
13 13
(...skipping 1192 matching lines...) Expand 10 before | Expand all | Expand 10 after
1206 &errorCode); 1206 &errorCode);
1207 } 1207 }
1208 } 1208 }
1209 1209
1210 void 1210 void
1211 CollationDataBuilder::build(CollationData &data, UErrorCode &errorCode) { 1211 CollationDataBuilder::build(CollationData &data, UErrorCode &errorCode) {
1212 buildMappings(data, errorCode); 1212 buildMappings(data, errorCode);
1213 if(base != NULL) { 1213 if(base != NULL) {
1214 data.numericPrimary = base->numericPrimary; 1214 data.numericPrimary = base->numericPrimary;
1215 data.compressibleBytes = base->compressibleBytes; 1215 data.compressibleBytes = base->compressibleBytes;
1216 data.scripts = base->scripts; 1216 data.numScripts = base->numScripts;
1217 data.scriptsLength = base->scriptsLength; 1217 data.scriptsIndex = base->scriptsIndex;
1218 data.scriptStarts = base->scriptStarts;
1219 data.scriptStartsLength = base->scriptStartsLength;
1218 } 1220 }
1219 buildFastLatinTable(data, errorCode); 1221 buildFastLatinTable(data, errorCode);
1220 } 1222 }
1221 1223
1222 void 1224 void
1223 CollationDataBuilder::buildMappings(CollationData &data, UErrorCode &errorCode) { 1225 CollationDataBuilder::buildMappings(CollationData &data, UErrorCode &errorCode) {
1224 if(U_FAILURE(errorCode)) { return; } 1226 if(U_FAILURE(errorCode)) { return; }
1225 if(trie == NULL || utrie2_isFrozen(trie)) { 1227 if(trie == NULL || utrie2_isFrozen(trie)) {
1226 errorCode = U_INVALID_STATE_ERROR; 1228 errorCode = U_INVALID_STATE_ERROR;
1227 return; 1229 return;
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1370 int32_t suffixStart = prefixLength + 1; // == prefix.length() 1372 int32_t suffixStart = prefixLength + 1; // == prefix.length()
1371 if(lastCond->context.length() == suffixStart) { 1373 if(lastCond->context.length() == suffixStart) {
1372 // One prefix without contraction suffix. 1374 // One prefix without contraction suffix.
1373 U_ASSERT(firstCond == lastCond); 1375 U_ASSERT(firstCond == lastCond);
1374 ce32 = lastCond->ce32; 1376 ce32 = lastCond->ce32;
1375 cond = lastCond; 1377 cond = lastCond;
1376 } else { 1378 } else {
1377 // Build the contractions trie. 1379 // Build the contractions trie.
1378 contractionBuilder.clear(); 1380 contractionBuilder.clear();
1379 // Entry for an empty suffix, to be stored before the trie. 1381 // Entry for an empty suffix, to be stored before the trie.
1380 uint32_t emptySuffixCE32; 1382 uint32_t emptySuffixCE32 = 0;
1381 uint32_t flags = 0; 1383 uint32_t flags = 0;
1382 if(firstCond->context.length() == suffixStart) { 1384 if(firstCond->context.length() == suffixStart) {
1383 // There is a mapping for the prefix and the single character c. (p|c) 1385 // There is a mapping for the prefix and the single character c. (p|c)
1384 // If no other suffix matches, then we return this value. 1386 // If no other suffix matches, then we return this value.
1385 emptySuffixCE32 = firstCond->ce32; 1387 emptySuffixCE32 = firstCond->ce32;
1386 cond = getConditionalCE32(firstCond->next); 1388 cond = getConditionalCE32(firstCond->next);
1387 } else { 1389 } else {
1388 // There is no mapping for the prefix and just the single charac ter. 1390 // There is no mapping for the prefix and just the single charac ter.
1389 // (There is no p|c, only p|cd, p|ce etc.) 1391 // (There is no p|c, only p|cd, p|ce etc.)
1390 flags |= Collation::CONTRACT_SINGLE_CP_NO_MATCH; 1392 flags |= Collation::CONTRACT_SINGLE_CP_NO_MATCH;
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1522 if(collIter == NULL) { 1524 if(collIter == NULL) {
1523 collIter = new DataBuilderCollationIterator(*this); 1525 collIter = new DataBuilderCollationIterator(*this);
1524 if(collIter == NULL) { return 0; } 1526 if(collIter == NULL) { return 0; }
1525 } 1527 }
1526 return collIter->fetchCEs(s, start, ces, cesLength); 1528 return collIter->fetchCEs(s, start, ces, cesLength);
1527 } 1529 }
1528 1530
1529 U_NAMESPACE_END 1531 U_NAMESPACE_END
1530 1532
1531 #endif // !UCONFIG_NO_COLLATION 1533 #endif // !UCONFIG_NO_COLLATION
OLDNEW
« no previous file with comments | « source/i18n/collationdata.cpp ('k') | source/i18n/collationdatareader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698