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

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

Issue 845603002: Update ICU to 54.1 step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@master
Patch Set: remove unusued directories Created 5 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/digitlst.cpp ('k') | source/i18n/dtitv_impl.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) 1997-2013, International Business Machines Corporation and * 3 * Copyright (C) 1997-2014, International Business Machines Corporation and *
4 * others. All Rights Reserved. * 4 * others. All Rights Reserved. *
5 ******************************************************************************* 5 *******************************************************************************
6 * 6 *
7 * File DTFMTSYM.CPP 7 * File DTFMTSYM.CPP
8 * 8 *
9 * Modification History: 9 * Modification History:
10 * 10 *
11 * Date Name Description 11 * Date Name Description
12 * 02/19/97 aliu Converted from java. 12 * 02/19/97 aliu Converted from java.
13 * 07/21/98 stephen Added getZoneIndex 13 * 07/21/98 stephen Added getZoneIndex
14 * Changed weekdays/short weekdays to be one-based 14 * Changed weekdays/short weekdays to be one-based
15 * 06/14/99 stephen Removed SimpleDateFormat::fgTimeZoneDataSuffix 15 * 06/14/99 stephen Removed SimpleDateFormat::fgTimeZoneDataSuffix
16 * 11/16/99 weiv Added 'Y' and 'e' to fgPatternChars 16 * 11/16/99 weiv Added 'Y' and 'e' to fgPatternChars
17 * 03/27/00 weiv Keeping resource bundle around! 17 * 03/27/00 weiv Keeping resource bundle around!
18 * 06/30/05 emmons Added eraNames, narrow month/day, standalone context 18 * 06/30/05 emmons Added eraNames, narrow month/day, standalone context
19 * 10/12/05 emmons Added setters for eraNames, month/day by width/conte xt 19 * 10/12/05 emmons Added setters for eraNames, month/day by width/conte xt
20 ******************************************************************************* 20 *******************************************************************************
21 */ 21 */
22 #include "unicode/utypes.h" 22 #include "unicode/utypes.h"
23 23
24 #if !UCONFIG_NO_FORMATTING 24 #if !UCONFIG_NO_FORMATTING
25 #include "unicode/ustring.h" 25 #include "unicode/ustring.h"
26 #include "unicode/dtfmtsym.h" 26 #include "unicode/dtfmtsym.h"
27 #include "unicode/smpdtfmt.h" 27 #include "unicode/smpdtfmt.h"
28 #include "unicode/msgfmt.h" 28 #include "unicode/msgfmt.h"
29 #include "unicode/tznames.h" 29 #include "unicode/tznames.h"
30 #include "cpputils.h" 30 #include "cpputils.h"
31 #include "ucln_in.h"
32 #include "umutex.h" 31 #include "umutex.h"
33 #include "cmemory.h" 32 #include "cmemory.h"
34 #include "cstring.h" 33 #include "cstring.h"
35 #include "locbased.h" 34 #include "locbased.h"
36 #include "gregoimp.h" 35 #include "gregoimp.h"
37 #include "hash.h" 36 #include "hash.h"
38 #include "uresimp.h" 37 #include "uresimp.h"
39 #include "ureslocs.h" 38 #include "ureslocs.h"
40 39
41 // ***************************************************************************** 40 // *****************************************************************************
42 // class DateFormatSymbols 41 // class DateFormatSymbols
43 // ***************************************************************************** 42 // *****************************************************************************
44 43
45 /** 44 /**
46 * These are static arrays we use only in the case where we have no 45 * These are static arrays we use only in the case where we have no
47 * resource data. 46 * resource data.
48 */ 47 */
49 48
50 #define PATTERN_CHARS_LEN 34 49 #define PATTERN_CHARS_LEN 35
51 50
52 /** 51 /**
53 * Unlocalized date-time pattern characters. For example: 'y', 'd', etc. All 52 * Unlocalized date-time pattern characters. For example: 'y', 'd', etc. All
54 * locales use the same these unlocalized pattern characters. 53 * locales use the same these unlocalized pattern characters.
55 */ 54 */
56 static const UChar gPatternChars[] = { 55 static const UChar gPatternChars[] = {
57 // GyMdkHmsSEDFwWahKzYeugAZvcLQqVUOXx 56 // GyMdkHmsSEDFwWahKzYeugAZvcLQqVUOXxr
58 0x47, 0x79, 0x4D, 0x64, 0x6B, 0x48, 0x6D, 0x73, 0x53, 0x45, 57 0x47, 0x79, 0x4D, 0x64, 0x6B, 0x48, 0x6D, 0x73, 0x53, 0x45,
59 0x44, 0x46, 0x77, 0x57, 0x61, 0x68, 0x4B, 0x7A, 0x59, 0x65, 58 0x44, 0x46, 0x77, 0x57, 0x61, 0x68, 0x4B, 0x7A, 0x59, 0x65,
60 0x75, 0x67, 0x41, 0x5A, 0x76, 0x63, 0x4c, 0x51, 0x71, 0x56, 59 0x75, 0x67, 0x41, 0x5A, 0x76, 0x63, 0x4c, 0x51, 0x71, 0x56,
61 0x55, 0x4F, 0x58, 0x78, 0 60 0x55, 0x4F, 0x58, 0x78, 0x72, 0
62 }; 61 };
63 62
64 /* length of an array */ 63 /* length of an array */
65 #define ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0])) 64 #define ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0]))
66 65
67 //------------------------------------------------------ 66 //------------------------------------------------------
68 // Strings of last resort. These are only used if we have no resource 67 // Strings of last resort. These are only used if we have no resource
69 // files. They aren't designed for actual use, just for backup. 68 // files. They aren't designed for actual use, just for backup.
70 69
71 // These are the month names and abbreviations of last resort. 70 // These are the month names and abbreviations of last resort.
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 150
152 #define kSUPPLEMENTAL "supplementalData" 151 #define kSUPPLEMENTAL "supplementalData"
153 152
154 /** 153 /**
155 * These are the tags we expect to see in normal resource bundle files associate d 154 * These are the tags we expect to see in normal resource bundle files associate d
156 * with a locale and calendar 155 * with a locale and calendar
157 */ 156 */
158 static const char gErasTag[]="eras"; 157 static const char gErasTag[]="eras";
159 static const char gCyclicNameSetsTag[]="cyclicNameSets"; 158 static const char gCyclicNameSetsTag[]="cyclicNameSets";
160 static const char gNameSetYearsTag[]="years"; 159 static const char gNameSetYearsTag[]="years";
160 static const char gNameSetZodiacsTag[]="zodiacs";
161 static const char gMonthNamesTag[]="monthNames"; 161 static const char gMonthNamesTag[]="monthNames";
162 static const char gMonthPatternsTag[]="monthPatterns"; 162 static const char gMonthPatternsTag[]="monthPatterns";
163 static const char gDayNamesTag[]="dayNames"; 163 static const char gDayNamesTag[]="dayNames";
164 static const char gNamesWideTag[]="wide"; 164 static const char gNamesWideTag[]="wide";
165 static const char gNamesAbbrTag[]="abbreviated"; 165 static const char gNamesAbbrTag[]="abbreviated";
166 static const char gNamesShortTag[]="short"; 166 static const char gNamesShortTag[]="short";
167 static const char gNamesNarrowTag[]="narrow"; 167 static const char gNamesNarrowTag[]="narrow";
168 static const char gNamesAllTag[]="all"; 168 static const char gNamesAllTag[]="all";
169 static const char gNamesLeapTag[]="leap"; 169 static const char gNamesLeapTag[]="leap";
170 static const char gNamesFormatTag[]="format"; 170 static const char gNamesFormatTag[]="format";
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 } else { 321 } else {
322 fLeapMonthPatterns = NULL; 322 fLeapMonthPatterns = NULL;
323 fLeapMonthPatternsCount = 0; 323 fLeapMonthPatternsCount = 0;
324 } 324 }
325 if (other.fShortYearNames != NULL) { 325 if (other.fShortYearNames != NULL) {
326 assignArray(fShortYearNames, fShortYearNamesCount, other.fShortYearNames , other.fShortYearNamesCount); 326 assignArray(fShortYearNames, fShortYearNamesCount, other.fShortYearNames , other.fShortYearNamesCount);
327 } else { 327 } else {
328 fShortYearNames = NULL; 328 fShortYearNames = NULL;
329 fShortYearNamesCount = 0; 329 fShortYearNamesCount = 0;
330 } 330 }
331 if (other.fShortZodiacNames != NULL) {
332 assignArray(fShortZodiacNames, fShortZodiacNamesCount, other.fShortZodia cNames, other.fShortZodiacNamesCount);
333 } else {
334 fShortZodiacNames = NULL;
335 fShortZodiacNamesCount = 0;
336 }
331 337
332 if (other.fZoneStrings != NULL) { 338 if (other.fZoneStrings != NULL) {
333 fZoneStringsColCount = other.fZoneStringsColCount; 339 fZoneStringsColCount = other.fZoneStringsColCount;
334 fZoneStringsRowCount = other.fZoneStringsRowCount; 340 fZoneStringsRowCount = other.fZoneStringsRowCount;
335 createZoneStrings((const UnicodeString**)other.fZoneStrings); 341 createZoneStrings((const UnicodeString**)other.fZoneStrings);
336 342
337 } else { 343 } else {
338 fZoneStrings = NULL; 344 fZoneStrings = NULL;
339 fZoneStringsColCount = 0; 345 fZoneStringsColCount = 0;
340 fZoneStringsRowCount = 0; 346 fZoneStringsRowCount = 0;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 if (fStandaloneShortWeekdays) delete[] fStandaloneShortWeekdays; 390 if (fStandaloneShortWeekdays) delete[] fStandaloneShortWeekdays;
385 if (fStandaloneShorterWeekdays) delete[] fStandaloneShorterWeekdays; 391 if (fStandaloneShorterWeekdays) delete[] fStandaloneShorterWeekdays;
386 if (fStandaloneNarrowWeekdays) delete[] fStandaloneNarrowWeekdays; 392 if (fStandaloneNarrowWeekdays) delete[] fStandaloneNarrowWeekdays;
387 if (fAmPms) delete[] fAmPms; 393 if (fAmPms) delete[] fAmPms;
388 if (fQuarters) delete[] fQuarters; 394 if (fQuarters) delete[] fQuarters;
389 if (fShortQuarters) delete[] fShortQuarters; 395 if (fShortQuarters) delete[] fShortQuarters;
390 if (fStandaloneQuarters) delete[] fStandaloneQuarters; 396 if (fStandaloneQuarters) delete[] fStandaloneQuarters;
391 if (fStandaloneShortQuarters) delete[] fStandaloneShortQuarters; 397 if (fStandaloneShortQuarters) delete[] fStandaloneShortQuarters;
392 if (fLeapMonthPatterns) delete[] fLeapMonthPatterns; 398 if (fLeapMonthPatterns) delete[] fLeapMonthPatterns;
393 if (fShortYearNames) delete[] fShortYearNames; 399 if (fShortYearNames) delete[] fShortYearNames;
400 if (fShortZodiacNames) delete[] fShortZodiacNames;
394 401
395 disposeZoneStrings(); 402 disposeZoneStrings();
396 } 403 }
397 404
398 void DateFormatSymbols::disposeZoneStrings() 405 void DateFormatSymbols::disposeZoneStrings()
399 { 406 {
400 if (fZoneStrings) { 407 if (fZoneStrings) {
401 for (int32_t row = 0; row < fZoneStringsRowCount; ++row) { 408 for (int32_t row = 0; row < fZoneStringsRowCount; ++row) {
402 delete[] fZoneStrings[row]; 409 delete[] fZoneStrings[row];
403 } 410 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 fStandaloneShortWeekdaysCount == other.fStandaloneShortWeekdaysCount && 461 fStandaloneShortWeekdaysCount == other.fStandaloneShortWeekdaysCount &&
455 fStandaloneShorterWeekdaysCount == other.fStandaloneShorterWeekdaysCount && 462 fStandaloneShorterWeekdaysCount == other.fStandaloneShorterWeekdaysCount &&
456 fStandaloneNarrowWeekdaysCount == other.fStandaloneNarrowWeekdaysCount & & 463 fStandaloneNarrowWeekdaysCount == other.fStandaloneNarrowWeekdaysCount & &
457 fAmPmsCount == other.fAmPmsCount && 464 fAmPmsCount == other.fAmPmsCount &&
458 fQuartersCount == other.fQuartersCount && 465 fQuartersCount == other.fQuartersCount &&
459 fShortQuartersCount == other.fShortQuartersCount && 466 fShortQuartersCount == other.fShortQuartersCount &&
460 fStandaloneQuartersCount == other.fStandaloneQuartersCount && 467 fStandaloneQuartersCount == other.fStandaloneQuartersCount &&
461 fStandaloneShortQuartersCount == other.fStandaloneShortQuartersCount && 468 fStandaloneShortQuartersCount == other.fStandaloneShortQuartersCount &&
462 fLeapMonthPatternsCount == other.fLeapMonthPatternsCount && 469 fLeapMonthPatternsCount == other.fLeapMonthPatternsCount &&
463 fShortYearNamesCount == other.fShortYearNamesCount && 470 fShortYearNamesCount == other.fShortYearNamesCount &&
471 fShortZodiacNamesCount == other.fShortZodiacNamesCount &&
464 (uprv_memcmp(fCapitalization, other.fCapitalization, sizeof(fCapitalizat ion))==0)) 472 (uprv_memcmp(fCapitalization, other.fCapitalization, sizeof(fCapitalizat ion))==0))
465 { 473 {
466 // Now compare the arrays themselves 474 // Now compare the arrays themselves
467 if (arrayCompare(fEras, other.fEras, fErasCount) && 475 if (arrayCompare(fEras, other.fEras, fErasCount) &&
468 arrayCompare(fEraNames, other.fEraNames, fEraNamesCount) && 476 arrayCompare(fEraNames, other.fEraNames, fEraNamesCount) &&
469 arrayCompare(fNarrowEras, other.fNarrowEras, fNarrowErasCount) && 477 arrayCompare(fNarrowEras, other.fNarrowEras, fNarrowErasCount) &&
470 arrayCompare(fMonths, other.fMonths, fMonthsCount) && 478 arrayCompare(fMonths, other.fMonths, fMonthsCount) &&
471 arrayCompare(fShortMonths, other.fShortMonths, fShortMonthsCount) && 479 arrayCompare(fShortMonths, other.fShortMonths, fShortMonthsCount) &&
472 arrayCompare(fNarrowMonths, other.fNarrowMonths, fNarrowMonthsCount) && 480 arrayCompare(fNarrowMonths, other.fNarrowMonths, fNarrowMonthsCount) &&
473 arrayCompare(fStandaloneMonths, other.fStandaloneMonths, fStandalone MonthsCount) && 481 arrayCompare(fStandaloneMonths, other.fStandaloneMonths, fStandalone MonthsCount) &&
474 arrayCompare(fStandaloneShortMonths, other.fStandaloneShortMonths, f StandaloneShortMonthsCount) && 482 arrayCompare(fStandaloneShortMonths, other.fStandaloneShortMonths, f StandaloneShortMonthsCount) &&
475 arrayCompare(fStandaloneNarrowMonths, other.fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount) && 483 arrayCompare(fStandaloneNarrowMonths, other.fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount) &&
476 arrayCompare(fWeekdays, other.fWeekdays, fWeekdaysCount) && 484 arrayCompare(fWeekdays, other.fWeekdays, fWeekdaysCount) &&
477 arrayCompare(fShortWeekdays, other.fShortWeekdays, fShortWeekdaysCou nt) && 485 arrayCompare(fShortWeekdays, other.fShortWeekdays, fShortWeekdaysCou nt) &&
478 arrayCompare(fShorterWeekdays, other.fShorterWeekdays, fShorterWeekd aysCount) && 486 arrayCompare(fShorterWeekdays, other.fShorterWeekdays, fShorterWeekd aysCount) &&
479 arrayCompare(fNarrowWeekdays, other.fNarrowWeekdays, fNarrowWeekdays Count) && 487 arrayCompare(fNarrowWeekdays, other.fNarrowWeekdays, fNarrowWeekdays Count) &&
480 arrayCompare(fStandaloneWeekdays, other.fStandaloneWeekdays, fStanda loneWeekdaysCount) && 488 arrayCompare(fStandaloneWeekdays, other.fStandaloneWeekdays, fStanda loneWeekdaysCount) &&
481 arrayCompare(fStandaloneShortWeekdays, other.fStandaloneShortWeekday s, fStandaloneShortWeekdaysCount) && 489 arrayCompare(fStandaloneShortWeekdays, other.fStandaloneShortWeekday s, fStandaloneShortWeekdaysCount) &&
482 arrayCompare(fStandaloneShorterWeekdays, other.fStandaloneShorterWee kdays, fStandaloneShorterWeekdaysCount) && 490 arrayCompare(fStandaloneShorterWeekdays, other.fStandaloneShorterWee kdays, fStandaloneShorterWeekdaysCount) &&
483 arrayCompare(fStandaloneNarrowWeekdays, other.fStandaloneNarrowWeekd ays, fStandaloneNarrowWeekdaysCount) && 491 arrayCompare(fStandaloneNarrowWeekdays, other.fStandaloneNarrowWeekd ays, fStandaloneNarrowWeekdaysCount) &&
484 arrayCompare(fAmPms, other.fAmPms, fAmPmsCount) && 492 arrayCompare(fAmPms, other.fAmPms, fAmPmsCount) &&
485 arrayCompare(fQuarters, other.fQuarters, fQuartersCount) && 493 arrayCompare(fQuarters, other.fQuarters, fQuartersCount) &&
486 arrayCompare(fShortQuarters, other.fShortQuarters, fShortQuartersCou nt) && 494 arrayCompare(fShortQuarters, other.fShortQuarters, fShortQuartersCou nt) &&
487 arrayCompare(fStandaloneQuarters, other.fStandaloneQuarters, fStanda loneQuartersCount) && 495 arrayCompare(fStandaloneQuarters, other.fStandaloneQuarters, fStanda loneQuartersCount) &&
488 arrayCompare(fStandaloneShortQuarters, other.fStandaloneShortQuarter s, fStandaloneShortQuartersCount) && 496 arrayCompare(fStandaloneShortQuarters, other.fStandaloneShortQuarter s, fStandaloneShortQuartersCount) &&
489 arrayCompare(fLeapMonthPatterns, other.fLeapMonthPatterns, fLeapMont hPatternsCount) && 497 arrayCompare(fLeapMonthPatterns, other.fLeapMonthPatterns, fLeapMont hPatternsCount) &&
490 arrayCompare(fShortYearNames, other.fShortYearNames, fShortYearNames Count)) 498 arrayCompare(fShortYearNames, other.fShortYearNames, fShortYearNames Count) &&
499 arrayCompare(fShortZodiacNames, other.fShortZodiacNames, fShortZodia cNamesCount))
491 { 500 {
492 // Compare the contents of fZoneStrings 501 // Compare the contents of fZoneStrings
493 if (fZoneStrings == NULL && other.fZoneStrings == NULL) { 502 if (fZoneStrings == NULL && other.fZoneStrings == NULL) {
494 if (fZSFLocale == other.fZSFLocale) { 503 if (fZSFLocale == other.fZSFLocale) {
495 return TRUE; 504 return TRUE;
496 } 505 }
497 } else if (fZoneStrings != NULL && other.fZoneStrings != NULL) { 506 } else if (fZoneStrings != NULL && other.fZoneStrings != NULL) {
498 if (fZoneStringsRowCount == other.fZoneStringsRowCount 507 if (fZoneStringsRowCount == other.fZoneStringsRowCount
499 && fZoneStringsColCount == other.fZoneStringsColCount) { 508 && fZoneStringsColCount == other.fZoneStringsColCount) {
500 UBool cmpres = TRUE; 509 UBool cmpres = TRUE;
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 return fAmPms; 732 return fAmPms;
724 } 733 }
725 734
726 const UnicodeString* 735 const UnicodeString*
727 DateFormatSymbols::getLeapMonthPatterns(int32_t &count) const 736 DateFormatSymbols::getLeapMonthPatterns(int32_t &count) const
728 { 737 {
729 count = fLeapMonthPatternsCount; 738 count = fLeapMonthPatternsCount;
730 return fLeapMonthPatterns; 739 return fLeapMonthPatterns;
731 } 740 }
732 741
742 const UnicodeString*
743 DateFormatSymbols::getYearNames(int32_t& count,
744 DtContextType /*ignored*/, DtWidthType /*ignored */) const
745 {
746 count = fShortYearNamesCount;
747 return fShortYearNames;
748 }
749
750 void
751 DateFormatSymbols::setYearNames(const UnicodeString* yearNames, int32_t count,
752 DtContextType context, DtWidthType width)
753 {
754 if (context == FORMAT && width == ABBREVIATED) {
755 if (fShortYearNames) {
756 delete[] fShortYearNames;
757 }
758 fShortYearNames = newUnicodeStringArray(count);
759 uprv_arrayCopy(yearNames, fShortYearNames, count);
760 fShortYearNamesCount = count;
761 }
762 }
763
764 const UnicodeString*
765 DateFormatSymbols::getZodiacNames(int32_t& count,
766 DtContextType /*ignored*/, DtWidthType /*ignored */) const
767 {
768 count = fShortZodiacNamesCount;
769 return fShortZodiacNames;
770 }
771
772 void
773 DateFormatSymbols::setZodiacNames(const UnicodeString* zodiacNames, int32_t coun t,
774 DtContextType context, DtWidthType width)
775 {
776 if (context == FORMAT && width == ABBREVIATED) {
777 if (fShortZodiacNames) {
778 delete[] fShortZodiacNames;
779 }
780 fShortZodiacNames = newUnicodeStringArray(count);
781 uprv_arrayCopy(zodiacNames, fShortZodiacNames, count);
782 fShortZodiacNamesCount = count;
783 }
784 }
785
733 //------------------------------------------------------ 786 //------------------------------------------------------
734 787
735 void 788 void
736 DateFormatSymbols::setEras(const UnicodeString* erasArray, int32_t count) 789 DateFormatSymbols::setEras(const UnicodeString* erasArray, int32_t count)
737 { 790 {
738 // delete the old list if we own it 791 // delete the old list if we own it
739 if (fEras) 792 if (fEras)
740 delete[] fEras; 793 delete[] fEras;
741 794
742 // we always own the new list, which we create here (we duplicate rather 795 // we always own the new list, which we create here (we duplicate rather
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
1191 UDateFormatField U_EXPORT2 1244 UDateFormatField U_EXPORT2
1192 DateFormatSymbols::getPatternCharIndex(UChar c) { 1245 DateFormatSymbols::getPatternCharIndex(UChar c) {
1193 const UChar *p = u_strchr(gPatternChars, c); 1246 const UChar *p = u_strchr(gPatternChars, c);
1194 if (p == NULL) { 1247 if (p == NULL) {
1195 return UDAT_FIELD_COUNT; 1248 return UDAT_FIELD_COUNT;
1196 } else { 1249 } else {
1197 return static_cast<UDateFormatField>(p - gPatternChars); 1250 return static_cast<UDateFormatField>(p - gPatternChars);
1198 } 1251 }
1199 } 1252 }
1200 1253
1201 static const uint32_t kNumericFields = 1254 static const uint64_t kNumericFieldsAlways =
1202 ((uint32_t)1 << UDAT_YEAR_FIELD) | // y 1255 ((uint64_t)1 << UDAT_YEAR_FIELD) | // y
1203 ((uint32_t)1 << UDAT_MONTH_FIELD) | // M or MM 1256 ((uint64_t)1 << UDAT_DATE_FIELD) | // d
1204 ((uint32_t)1 << UDAT_DATE_FIELD) | // d 1257 ((uint64_t)1 << UDAT_HOUR_OF_DAY1_FIELD) | // k
1205 ((uint32_t)1 << UDAT_HOUR_OF_DAY1_FIELD) | // k 1258 ((uint64_t)1 << UDAT_HOUR_OF_DAY0_FIELD) | // H
1206 ((uint32_t)1 << UDAT_HOUR_OF_DAY0_FIELD) | // H 1259 ((uint64_t)1 << UDAT_MINUTE_FIELD) | // m
1207 ((uint32_t)1 << UDAT_MINUTE_FIELD) | // m 1260 ((uint64_t)1 << UDAT_SECOND_FIELD) | // s
1208 ((uint32_t)1 << UDAT_SECOND_FIELD) | // s 1261 ((uint64_t)1 << UDAT_FRACTIONAL_SECOND_FIELD) | // S
1209 ((uint32_t)1 << UDAT_FRACTIONAL_SECOND_FIELD) | // S 1262 ((uint64_t)1 << UDAT_DAY_OF_YEAR_FIELD) | // D
1210 ((uint32_t)1 << UDAT_DAY_OF_YEAR_FIELD) | // D 1263 ((uint64_t)1 << UDAT_DAY_OF_WEEK_IN_MONTH_FIELD) | // F
1211 ((uint32_t)1 << UDAT_DAY_OF_WEEK_IN_MONTH_FIELD) | // F 1264 ((uint64_t)1 << UDAT_WEEK_OF_YEAR_FIELD) | // w
1212 ((uint32_t)1 << UDAT_WEEK_OF_YEAR_FIELD) | // w 1265 ((uint64_t)1 << UDAT_WEEK_OF_MONTH_FIELD) | // W
1213 ((uint32_t)1 << UDAT_WEEK_OF_MONTH_FIELD) | // W 1266 ((uint64_t)1 << UDAT_HOUR1_FIELD) | // h
1214 ((uint32_t)1 << UDAT_HOUR1_FIELD) | // h 1267 ((uint64_t)1 << UDAT_HOUR0_FIELD) | // K
1215 ((uint32_t)1 << UDAT_HOUR0_FIELD) | // K 1268 ((uint64_t)1 << UDAT_YEAR_WOY_FIELD) | // Y
1216 ((uint32_t)1 << UDAT_YEAR_WOY_FIELD) | // Y 1269 ((uint64_t)1 << UDAT_EXTENDED_YEAR_FIELD) | // u
1217 ((uint32_t)1 << UDAT_DOW_LOCAL_FIELD) | // e 1270 ((uint64_t)1 << UDAT_JULIAN_DAY_FIELD) | // g
1218 ((uint32_t)1 << UDAT_EXTENDED_YEAR_FIELD); // u 1271 ((uint64_t)1 << UDAT_MILLISECONDS_IN_DAY_FIELD) | // A
1272 ((uint64_t)1 << UDAT_RELATED_YEAR_FIELD); // r
1273
1274 static const uint64_t kNumericFieldsForCount12 =
1275 ((uint64_t)1 << UDAT_MONTH_FIELD) | // M or MM
1276 ((uint64_t)1 << UDAT_DOW_LOCAL_FIELD) | // e or ee
1277 ((uint64_t)1 << UDAT_STANDALONE_DAY_FIELD) | // c or cc
1278 ((uint64_t)1 << UDAT_STANDALONE_MONTH_FIELD) | // L or LL
1279 ((uint64_t)1 << UDAT_QUARTER_FIELD) | // Q or QQ
1280 ((uint64_t)1 << UDAT_STANDALONE_QUARTER_FIELD); // q or qq
1219 1281
1220 UBool U_EXPORT2 1282 UBool U_EXPORT2
1221 DateFormatSymbols::isNumericField(UDateFormatField f, int32_t count) { 1283 DateFormatSymbols::isNumericField(UDateFormatField f, int32_t count) {
1222 return 1284 if (f == UDAT_FIELD_COUNT) {
1223 f != UDAT_FIELD_COUNT && 1285 return FALSE;
1224 (kNumericFields & ((uint32_t)1 << f)) != 0 && 1286 }
1225 (f != UDAT_MONTH_FIELD || count < 3); 1287 uint64_t flag = ((uint64_t)1 << f);
1288 return ((kNumericFieldsAlways & flag) != 0 || ((kNumericFieldsForCount12 & f lag) != 0 && count < 3));
1226 } 1289 }
1227 1290
1228 UBool U_EXPORT2 1291 UBool U_EXPORT2
1229 DateFormatSymbols::isNumericPatternChar(UChar c, int32_t count) { 1292 DateFormatSymbols::isNumericPatternChar(UChar c, int32_t count) {
1230 return isNumericField(getPatternCharIndex(c), count); 1293 return isNumericField(getPatternCharIndex(c), count);
1231 } 1294 }
1232 1295
1233 //------------------------------------------------------ 1296 //------------------------------------------------------
1234 1297
1235 UnicodeString& 1298 UnicodeString&
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 fShortQuarters = NULL; 1435 fShortQuarters = NULL;
1373 fShortQuartersCount = 0; 1436 fShortQuartersCount = 0;
1374 fStandaloneQuarters = NULL; 1437 fStandaloneQuarters = NULL;
1375 fStandaloneQuartersCount = 0; 1438 fStandaloneQuartersCount = 0;
1376 fStandaloneShortQuarters = NULL; 1439 fStandaloneShortQuarters = NULL;
1377 fStandaloneShortQuartersCount = 0; 1440 fStandaloneShortQuartersCount = 0;
1378 fLeapMonthPatterns = NULL; 1441 fLeapMonthPatterns = NULL;
1379 fLeapMonthPatternsCount = 0; 1442 fLeapMonthPatternsCount = 0;
1380 fShortYearNames = NULL; 1443 fShortYearNames = NULL;
1381 fShortYearNamesCount = 0; 1444 fShortYearNamesCount = 0;
1445 fShortZodiacNames = NULL;
1446 fShortZodiacNamesCount = 0;
1382 fZoneStringsRowCount = 0; 1447 fZoneStringsRowCount = 0;
1383 fZoneStringsColCount = 0; 1448 fZoneStringsColCount = 0;
1384 fZoneStrings = NULL; 1449 fZoneStrings = NULL;
1385 fLocaleZoneStrings = NULL; 1450 fLocaleZoneStrings = NULL;
1386 uprv_memset(fCapitalization, 0, sizeof(fCapitalization)); 1451 uprv_memset(fCapitalization, 0, sizeof(fCapitalization));
1387 1452
1388 // We need to preserve the requested locale for 1453 // We need to preserve the requested locale for
1389 // lazy ZoneStringFormat instantiation. ZoneStringFormat 1454 // lazy ZoneStringFormat instantiation. ZoneStringFormat
1390 // is region sensitive, thus, bundle locale bundle's locale 1455 // is region sensitive, thus, bundle locale bundle's locale
1391 // is not sufficient. 1456 // is not sufficient.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1423 fLeapMonthPatterns = newUnicodeStringArray(kMonthPatternsCount); 1488 fLeapMonthPatterns = newUnicodeStringArray(kMonthPatternsCount);
1424 if (fLeapMonthPatterns) { 1489 if (fLeapMonthPatterns) {
1425 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatWide , calData.getByKey2(gMonthPatternsTag, gNamesWideTag, tempStatus), tempStatus); 1490 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatWide , calData.getByKey2(gMonthPatternsTag, gNamesWideTag, tempStatus), tempStatus);
1426 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatAbbr ev, calData.getByKey2(gMonthPatternsTag, gNamesAbbrTag, tempStatus), tempStatus) ; 1491 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatAbbr ev, calData.getByKey2(gMonthPatternsTag, gNamesAbbrTag, tempStatus), tempStatus) ;
1427 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatNarr ow, calData.getByKey2(gMonthPatternsTag, gNamesNarrowTag, tempStatus), tempStatu s); 1492 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatNarr ow, calData.getByKey2(gMonthPatternsTag, gNamesNarrowTag, tempStatus), tempStatu s);
1428 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandalone Wide, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesWideTag, t empStatus), tempStatus); 1493 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandalone Wide, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesWideTag, t empStatus), tempStatus);
1429 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandalone Abbrev, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesAbbrTag, tempStatus), tempStatus); 1494 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandalone Abbrev, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesAbbrTag, tempStatus), tempStatus);
1430 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandalone Narrow, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesNarrowTa g, tempStatus), tempStatus); 1495 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandalone Narrow, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesNarrowTa g, tempStatus), tempStatus);
1431 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternNumeric, c alData.getByKey3(gMonthPatternsTag, gNamesNumericTag, gNamesAllTag, tempStatus), tempStatus); 1496 initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternNumeric, c alData.getByKey3(gMonthPatternsTag, gNamesNumericTag, gNamesAllTag, tempStatus), tempStatus);
1432 if (U_SUCCESS(tempStatus)) { 1497 if (U_SUCCESS(tempStatus)) {
1498 // Hack to fix bad C inheritance for dangi monthPatterns (OK in J); this should be handled by aliases in root, but isn't.
1499 // The ordering of the following statements is important.
1500 if (fLeapMonthPatterns[kLeapMonthPatternFormatAbbrev].isEmpty()) {
1501 fLeapMonthPatterns[kLeapMonthPatternFormatAbbrev].setTo(fLea pMonthPatterns[kLeapMonthPatternFormatWide]);
1502 };
1503 if (fLeapMonthPatterns[kLeapMonthPatternFormatNarrow].isEmpty()) {
1504 fLeapMonthPatterns[kLeapMonthPatternFormatNarrow].setTo(fLea pMonthPatterns[kLeapMonthPatternStandaloneNarrow]);
1505 };
1506 if (fLeapMonthPatterns[kLeapMonthPatternStandaloneWide].isEmpty( )) {
1507 fLeapMonthPatterns[kLeapMonthPatternStandaloneWide].setTo(fL eapMonthPatterns[kLeapMonthPatternFormatWide]);
1508 };
1509 if (fLeapMonthPatterns[kLeapMonthPatternStandaloneAbbrev].isEmpt y()) {
1510 fLeapMonthPatterns[kLeapMonthPatternStandaloneAbbrev].setTo( fLeapMonthPatterns[kLeapMonthPatternFormatAbbrev]);
1511 };
1512 // end of hack
1433 fLeapMonthPatternsCount = kMonthPatternsCount; 1513 fLeapMonthPatternsCount = kMonthPatternsCount;
1434 } else { 1514 } else {
1435 delete[] fLeapMonthPatterns; 1515 delete[] fLeapMonthPatterns;
1436 fLeapMonthPatterns = NULL; 1516 fLeapMonthPatterns = NULL;
1437 } 1517 }
1438 } 1518 }
1439 } 1519 }
1440 1520
1441 tempStatus = U_ZERO_ERROR; 1521 tempStatus = U_ZERO_ERROR;
1442 UResourceBundle *cyclicNameSets= calData.getByKey(gCyclicNameSetsTag, tempSt atus); 1522 UResourceBundle *cyclicNameSets= calData.getByKey(gCyclicNameSetsTag, tempSt atus);
1443 if (U_SUCCESS(tempStatus) && cyclicNameSets != NULL) { 1523 if (U_SUCCESS(tempStatus) && cyclicNameSets != NULL) {
1444 UResourceBundle *nameSetYears = ures_getByKeyWithFallback(cyclicNameSets , gNameSetYearsTag, NULL, &tempStatus); 1524 UResourceBundle *nameSetYears = ures_getByKeyWithFallback(cyclicNameSets , gNameSetYearsTag, NULL, &tempStatus);
1445 if (U_SUCCESS(tempStatus)) { 1525 if (U_SUCCESS(tempStatus)) {
1446 UResourceBundle *nameSetYearsFmt = ures_getByKeyWithFallback(nameSet Years, gNamesFormatTag, NULL, &tempStatus); 1526 UResourceBundle *nameSetYearsFmt = ures_getByKeyWithFallback(nameSet Years, gNamesFormatTag, NULL, &tempStatus);
1447 if (U_SUCCESS(tempStatus)) { 1527 if (U_SUCCESS(tempStatus)) {
1448 UResourceBundle *nameSetYearsFmtAbbrev = ures_getByKeyWithFallba ck(nameSetYearsFmt, gNamesAbbrTag, NULL, &tempStatus); 1528 UResourceBundle *nameSetYearsFmtAbbrev = ures_getByKeyWithFallba ck(nameSetYearsFmt, gNamesAbbrTag, NULL, &tempStatus);
1449 if (U_SUCCESS(tempStatus)) { 1529 if (U_SUCCESS(tempStatus)) {
1450 initField(&fShortYearNames, fShortYearNamesCount, nameSetYea rsFmtAbbrev, tempStatus); 1530 initField(&fShortYearNames, fShortYearNamesCount, nameSetYea rsFmtAbbrev, tempStatus);
1451 ures_close(nameSetYearsFmtAbbrev); 1531 ures_close(nameSetYearsFmtAbbrev);
1452 } 1532 }
1453 ures_close(nameSetYearsFmt); 1533 ures_close(nameSetYearsFmt);
1454 } 1534 }
1455 ures_close(nameSetYears); 1535 ures_close(nameSetYears);
1456 } 1536 }
1537 UResourceBundle *nameSetZodiacs = ures_getByKeyWithFallback(cyclicNameSe ts, gNameSetZodiacsTag, NULL, &tempStatus);
1538 if (U_SUCCESS(tempStatus)) {
1539 UResourceBundle *nameSetZodiacsFmt = ures_getByKeyWithFallback(nameS etZodiacs, gNamesFormatTag, NULL, &tempStatus);
1540 if (U_SUCCESS(tempStatus)) {
1541 UResourceBundle *nameSetZodiacsFmtAbbrev = ures_getByKeyWithFall back(nameSetZodiacsFmt, gNamesAbbrTag, NULL, &tempStatus);
1542 if (U_SUCCESS(tempStatus)) {
1543 initField(&fShortZodiacNames, fShortZodiacNamesCount, nameSe tZodiacsFmtAbbrev, tempStatus);
1544 ures_close(nameSetZodiacsFmtAbbrev);
1545 }
1546 ures_close(nameSetZodiacsFmt);
1547 }
1548 ures_close(nameSetZodiacs);
1549 }
1457 } 1550 }
1458 1551
1459 tempStatus = U_ZERO_ERROR; 1552 tempStatus = U_ZERO_ERROR;
1460 UResourceBundle *localeBundle = ures_open(NULL, locale.getName(), &tempStatu s); 1553 UResourceBundle *localeBundle = ures_open(NULL, locale.getName(), &tempStatu s);
1461 if (U_SUCCESS(tempStatus)) { 1554 if (U_SUCCESS(tempStatus)) {
1462 UResourceBundle *contextTransforms = ures_getByKeyWithFallback(localeBun dle, gContextTransformsTag, NULL, &tempStatus); 1555 UResourceBundle *contextTransforms = ures_getByKeyWithFallback(localeBun dle, gContextTransformsTag, NULL, &tempStatus);
1463 if (U_SUCCESS(tempStatus)) { 1556 if (U_SUCCESS(tempStatus)) {
1464 UResourceBundle *contextTransformUsage; 1557 UResourceBundle *contextTransformUsage;
1465 while ( (contextTransformUsage = ures_getNextResource(contextTransfo rms, NULL, &tempStatus)) != NULL ) { 1558 while ( (contextTransformUsage = ures_getNextResource(contextTransfo rms, NULL, &tempStatus)) != NULL ) {
1466 const int32_t * intVector = ures_getIntVector(contextTransformUs age, &len, &status); 1559 const int32_t * intVector = ures_getIntVector(contextTransformUs age, &len, &status);
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
1786 DateFormatSymbols::getLocale(ULocDataLocaleType type, UErrorCode& status) const { 1879 DateFormatSymbols::getLocale(ULocDataLocaleType type, UErrorCode& status) const {
1787 U_LOCALE_BASED(locBased, *this); 1880 U_LOCALE_BASED(locBased, *this);
1788 return locBased.getLocale(type, status); 1881 return locBased.getLocale(type, status);
1789 } 1882 }
1790 1883
1791 U_NAMESPACE_END 1884 U_NAMESPACE_END
1792 1885
1793 #endif /* #if !UCONFIG_NO_FORMATTING */ 1886 #endif /* #if !UCONFIG_NO_FORMATTING */
1794 1887
1795 //eof 1888 //eof
OLDNEW
« no previous file with comments | « source/i18n/digitlst.cpp ('k') | source/i18n/dtitv_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698