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

Side by Side Diff: source/i18n/unicode/smpdtfmt.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 unified diff | Download patch
« no previous file with comments | « source/i18n/unicode/scientificnumberformatter.h ('k') | source/i18n/unicode/tblcoll.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 * Copyright (C) 1997-2014, International Business Machines Corporation and 2 * Copyright (C) 1997-2015, International Business Machines Corporation and
3 * others. All Rights Reserved. 3 * others. All Rights Reserved.
4 ******************************************************************************* 4 *******************************************************************************
5 * 5 *
6 * File SMPDTFMT.H 6 * File SMPDTFMT.H
7 * 7 *
8 * Modification History: 8 * Modification History:
9 * 9 *
10 * Date Name Description 10 * Date Name Description
11 * 02/19/97 aliu Converted from java. 11 * 02/19/97 aliu Converted from java.
12 * 07/09/97 helena Make ParsePosition into a class. 12 * 07/09/97 helena Make ParsePosition into a class.
(...skipping 25 matching lines...) Expand all
38 #include "unicode/tzfmt.h" /* for UTimeZoneFormatTimeType */ 38 #include "unicode/tzfmt.h" /* for UTimeZoneFormatTimeType */
39 #include "unicode/brkiter.h" 39 #include "unicode/brkiter.h"
40 40
41 U_NAMESPACE_BEGIN 41 U_NAMESPACE_BEGIN
42 42
43 class DateFormatSymbols; 43 class DateFormatSymbols;
44 class DateFormat; 44 class DateFormat;
45 class MessageFormat; 45 class MessageFormat;
46 class FieldPositionHandler; 46 class FieldPositionHandler;
47 class TimeZoneFormat; 47 class TimeZoneFormat;
48 class SharedNumberFormat;
49 class SimpleDateFormatMutableNFs;
48 50
49 /** 51 /**
50 * 52 *
51 * SimpleDateFormat is a concrete class for formatting and parsing dates in a 53 * SimpleDateFormat is a concrete class for formatting and parsing dates in a
52 * language-independent manner. It allows for formatting (millis -> text), 54 * language-independent manner. It allows for formatting (millis -> text),
53 * parsing (text -> millis), and normalization. Formats/Parses a date or time, 55 * parsing (text -> millis), and normalization. Formats/Parses a date or time,
54 * which is the standard milliseconds since 24:00 GMT, Jan 1, 1970. 56 * which is the standard milliseconds since 24:00 GMT, Jan 1, 1970.
55 * <P> 57 * <P>
56 * Clients are encouraged to create a date-time formatter using DateFormat::getI nstance(), 58 * Clients are encouraged to create a date-time formatter using DateFormat::getI nstance(),
57 * getDateInstance(), getDateInstance(), or getDateTimeInstance() rather than 59 * getDateInstance(), getDateInstance(), or getDateTimeInstance() rather than
(...skipping 1052 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 */ 1112 */
1111 virtual void setTimeZoneFormat(const TimeZoneFormat& newTimeZoneFormat); 1113 virtual void setTimeZoneFormat(const TimeZoneFormat& newTimeZoneFormat);
1112 1114
1113 /** 1115 /**
1114 * Gets the time zone format object associated with this date/time formatter . 1116 * Gets the time zone format object associated with this date/time formatter .
1115 * @return the time zone format associated with this date/time formatter. 1117 * @return the time zone format associated with this date/time formatter.
1116 * @internal ICU 49 technology preview 1118 * @internal ICU 49 technology preview
1117 */ 1119 */
1118 virtual const TimeZoneFormat* getTimeZoneFormat(void) const; 1120 virtual const TimeZoneFormat* getTimeZoneFormat(void) const;
1119 1121
1120 /* Cannot use #ifndef U_HIDE_DRAFT_API for the following draft method since it is virtual */
1121 /** 1122 /**
1122 * Set a particular UDisplayContext value in the formatter, such as 1123 * Set a particular UDisplayContext value in the formatter, such as
1123 * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. Note: For getContext, see 1124 * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. Note: For getContext, see
1124 * DateFormat. 1125 * DateFormat.
1125 * @param value The UDisplayContext value to set. 1126 * @param value The UDisplayContext value to set.
1126 * @param status Input/output status. If at entry this indicates a failure 1127 * @param status Input/output status. If at entry this indicates a failure
1127 * status, the function will do nothing; otherwise this will b e 1128 * status, the function will do nothing; otherwise this will b e
1128 * updated with any new status from the function. 1129 * updated with any new status from the function.
1129 * @draft ICU 53 1130 * @stable ICU 53
1130 */ 1131 */
1131 virtual void setContext(UDisplayContext value, UErrorCode& status); 1132 virtual void setContext(UDisplayContext value, UErrorCode& status);
1132 1133
1133 #ifndef U_HIDE_DRAFT_API
1134 /** 1134 /**
1135 * Overrides base class method and 1135 * Overrides base class method and
1136 * This method clears per field NumberFormat instances 1136 * This method clears per field NumberFormat instances
1137 * previously set by {@see adoptNumberFormat(const UnicodeString&, NumberFor mat*, UErrorCode)} 1137 * previously set by {@see adoptNumberFormat(const UnicodeString&, NumberFor mat*, UErrorCode)}
1138 * @param adoptNF the NumbeferFormat used 1138 * @param adoptNF the NumbeferFormat used
1139 * @draft ICU 54 1139 * @stable ICU 54
1140 */ 1140 */
1141 void adoptNumberFormat(NumberFormat *formatToAdopt); 1141 void adoptNumberFormat(NumberFormat *formatToAdopt);
1142 1142
1143 /** 1143 /**
1144 * Allow the user to set the NumberFormat for several fields 1144 * Allow the user to set the NumberFormat for several fields
1145 * It can be a single field like: "y"(year) or "M"(month) 1145 * It can be a single field like: "y"(year) or "M"(month)
1146 * It can be several field combined together: "yM"(year and month) 1146 * It can be several field combined together: "yM"(year and month)
1147 * Note: 1147 * Note:
1148 * 1 symbol field is enough for multiple symbol field (so "y" will override "yy", "yyy") 1148 * 1 symbol field is enough for multiple symbol field (so "y" will override "yy", "yyy")
1149 * If the field is not numeric, then override has no effect (like "MMM" will use abbreviation, not numerical field) 1149 * If the field is not numeric, then override has no effect (like "MMM" will use abbreviation, not numerical field)
1150 * Per field NumberFormat can also be cleared in {@see DateFormat::setNumber Format(const NumberFormat& newNumberFormat)} 1150 * Per field NumberFormat can also be cleared in {@see DateFormat::setNumber Format(const NumberFormat& newNumberFormat)}
1151 * 1151 *
1152 * @param fields the fields to override(like y) 1152 * @param fields the fields to override(like y)
1153 * @param adoptNF the NumbeferFormat used 1153 * @param adoptNF the NumbeferFormat used
1154 * @param status Receives a status code, which will be U_ZERO_ERROR 1154 * @param status Receives a status code, which will be U_ZERO_ERROR
1155 * if the operation succeeds. 1155 * if the operation succeeds.
1156 * @draft ICU 54 1156 * @stable ICU 54
1157 */ 1157 */
1158 void adoptNumberFormat(const UnicodeString& fields, NumberFormat *formatToAd opt, UErrorCode &status); 1158 void adoptNumberFormat(const UnicodeString& fields, NumberFormat *formatToAd opt, UErrorCode &status);
1159 1159
1160 /** 1160 /**
1161 * Get the numbering system to be used for a particular field. 1161 * Get the numbering system to be used for a particular field.
1162 * @param field The UDateFormatField to get 1162 * @param field The UDateFormatField to get
1163 * @draft ICU 54 1163 * @stable ICU 54
1164 */ 1164 */
1165 const NumberFormat * getNumberFormatForField(UChar field) const; 1165 const NumberFormat * getNumberFormatForField(UChar field) const;
1166 #endif /* U_HIDE_DRAFT_API */
1167 1166
1168 #ifndef U_HIDE_INTERNAL_API 1167 #ifndef U_HIDE_INTERNAL_API
1169 /** 1168 /**
1170 * This is for ICU internal use only. Please do not use. 1169 * This is for ICU internal use only. Please do not use.
1171 * Check whether the 'field' is smaller than all the fields covered in 1170 * Check whether the 'field' is smaller than all the fields covered in
1172 * pattern, return TRUE if it is. The sequence of calendar field, 1171 * pattern, return TRUE if it is. The sequence of calendar field,
1173 * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,... 1172 * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,...
1174 * @param field the calendar field need to check against 1173 * @param field the calendar field need to check against
1175 * @return TRUE if the 'field' is smaller than all the fields 1174 * @return TRUE if the 'field' is smaller than all the fields
1176 * covered in pattern. FALSE otherwise. 1175 * covered in pattern. FALSE otherwise.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 * @param status Receives a status code, which will be U_ZERO_ERROR if th e operation 1253 * @param status Receives a status code, which will be U_ZERO_ERROR if th e operation
1255 * succeeds. 1254 * succeeds.
1256 */ 1255 */
1257 void subFormat(UnicodeString &appendTo, 1256 void subFormat(UnicodeString &appendTo,
1258 UChar ch, 1257 UChar ch,
1259 int32_t count, 1258 int32_t count,
1260 UDisplayContext capitalizationContext, 1259 UDisplayContext capitalizationContext,
1261 int32_t fieldNum, 1260 int32_t fieldNum,
1262 FieldPositionHandler& handler, 1261 FieldPositionHandler& handler,
1263 Calendar& cal, 1262 Calendar& cal,
1263 SimpleDateFormatMutableNFs &mutableNFs,
1264 UErrorCode& status) const; // in case of illegal argument 1264 UErrorCode& status) const; // in case of illegal argument
1265 1265
1266 /** 1266 /**
1267 * Used by subFormat() to format a numeric value. 1267 * Used by subFormat() to format a numeric value.
1268 * Appends to toAppendTo a string representation of "value" 1268 * Appends to toAppendTo a string representation of "value"
1269 * having a number of digits between "minDigits" and 1269 * having a number of digits between "minDigits" and
1270 * "maxDigits". Uses the DateFormat's NumberFormat. 1270 * "maxDigits". Uses the DateFormat's NumberFormat.
1271 * 1271 *
1272 * @param currentNumberFormat 1272 * @param currentNumberFormat
1273 * @param appendTo Output parameter to receive result. 1273 * @param appendTo Output parameter to receive result.
(...skipping 27 matching lines...) Expand all
1301 /** 1301 /**
1302 * initializes fCalendar from parameters. Returns fCalendar as a convenienc e. 1302 * initializes fCalendar from parameters. Returns fCalendar as a convenienc e.
1303 * @param adoptZone Zone to be adopted, or NULL for TimeZone::createDefault (). 1303 * @param adoptZone Zone to be adopted, or NULL for TimeZone::createDefault ().
1304 * @param locale Locale of the calendar 1304 * @param locale Locale of the calendar
1305 * @param status Error code 1305 * @param status Error code
1306 * @return the newly constructed fCalendar 1306 * @return the newly constructed fCalendar
1307 */ 1307 */
1308 Calendar *initializeCalendar(TimeZone* adoptZone, const Locale& locale, UErr orCode& status); 1308 Calendar *initializeCalendar(TimeZone* adoptZone, const Locale& locale, UErr orCode& status);
1309 1309
1310 /** 1310 /**
1311 * initializes fSymbols from parameters.
1312 * @param locale Locale of the symbols
1313 * @param calendar Alias to Calendar that will be used.
1314 * @param status Error code
1315 */
1316 void initializeSymbols(const Locale& locale, Calendar* calendar, UErrorCode& status);
1317
1318 /**
1319 * Called by several of the constructors to load pattern data and formatting symbols 1311 * Called by several of the constructors to load pattern data and formatting symbols
1320 * out of a resource bundle and initialize the locale based on it. 1312 * out of a resource bundle and initialize the locale based on it.
1321 * @param timeStyle The time style, as passed to DateFormat::createDateI nstance(). 1313 * @param timeStyle The time style, as passed to DateFormat::createDateI nstance().
1322 * @param dateStyle The date style, as passed to DateFormat::createTimeI nstance(). 1314 * @param dateStyle The date style, as passed to DateFormat::createTimeI nstance().
1323 * @param locale The locale to load the patterns from. 1315 * @param locale The locale to load the patterns from.
1324 * @param status Filled in with an error code if loading the data fro m the 1316 * @param status Filled in with an error code if loading the data fro m the
1325 * resources fails. 1317 * resources fails.
1326 */ 1318 */
1327 void construct(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UEr rorCode& status); 1319 void construct(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UEr rorCode& status);
1328 1320
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1400 * into a date/time string. 1392 * into a date/time string.
1401 * @param patLoc 1393 * @param patLoc
1402 * @param numericLeapMonthFormatter If non-null, used to parse numeric leap months. 1394 * @param numericLeapMonthFormatter If non-null, used to parse numeric leap months.
1403 * @param tzTimeType the type of parsed time zone - standard, daylight or un known (output). 1395 * @param tzTimeType the type of parsed time zone - standard, daylight or un known (output).
1404 * This parameter can be NULL if caller does not need the information. 1396 * This parameter can be NULL if caller does not need the information.
1405 * @return the new start position if matching succeeded; a negative number 1397 * @return the new start position if matching succeeded; a negative number
1406 * indicating matching failure, otherwise. 1398 * indicating matching failure, otherwise.
1407 */ 1399 */
1408 int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_ t count, 1400 int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_ t count,
1409 UBool obeyCount, UBool allowNegative, UBool ambiguousYear[] , int32_t& saveHebrewMonth, Calendar& cal, 1401 UBool obeyCount, UBool allowNegative, UBool ambiguousYear[] , int32_t& saveHebrewMonth, Calendar& cal,
1410 int32_t patLoc, MessageFormat * numericLeapMonthFormatter, UTimeZoneFormatTimeType *tzTimeType) const; 1402 int32_t patLoc, MessageFormat * numericLeapMonthFormatter, UTimeZoneFormatTimeType *tzTimeType, SimpleDateFormatMutableNFs &mutableNFs) con st;
1411 1403
1412 void parseInt(const UnicodeString& text, 1404 void parseInt(const UnicodeString& text,
1413 Formattable& number, 1405 Formattable& number,
1414 ParsePosition& pos, 1406 ParsePosition& pos,
1415 UBool allowNegative, 1407 UBool allowNegative,
1416 NumberFormat *fmt) const; 1408 NumberFormat *fmt) const;
1417 1409
1418 void parseInt(const UnicodeString& text, 1410 void parseInt(const UnicodeString& text,
1419 Formattable& number, 1411 Formattable& number,
1420 int32_t maxDigits, 1412 int32_t maxDigits,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1476 * in text. 1468 * in text.
1477 */ 1469 */
1478 int32_t skipUWhiteSpace(const UnicodeString& text, int32_t pos) const; 1470 int32_t skipUWhiteSpace(const UnicodeString& text, int32_t pos) const;
1479 1471
1480 /** 1472 /**
1481 * Initialize NumberFormat instances used for numbering system overrides. 1473 * Initialize NumberFormat instances used for numbering system overrides.
1482 */ 1474 */
1483 void initNumberFormatters(const Locale &locale,UErrorCode &status); 1475 void initNumberFormatters(const Locale &locale,UErrorCode &status);
1484 1476
1485 /** 1477 /**
1486 * Get the numbering system to be used for a particular field.
1487 */
1488 NumberFormat * getNumberFormatByIndex(UDateFormatField index) const;
1489
1490 /**
1491 * Parse the given override string and set up structures for number formats 1478 * Parse the given override string and set up structures for number formats
1492 */ 1479 */
1493 void processOverrideString(const Locale &locale, const UnicodeString &str, i nt8_t type, UErrorCode &status); 1480 void processOverrideString(const Locale &locale, const UnicodeString &str, i nt8_t type, UErrorCode &status);
1494 1481
1495 /** 1482 /**
1496 * Used to map pattern characters to Calendar field identifiers. 1483 * Used to map pattern characters to Calendar field identifiers.
1497 */ 1484 */
1498 static const UCalendarDateFields fgPatternIndexToCalendarField[]; 1485 static const UCalendarDateFields fgPatternIndexToCalendarField[];
1499 1486
1500 /** 1487 /**
1501 * Map index into pattern character string to DateFormat field number 1488 * Map index into pattern character string to DateFormat field number
1502 */ 1489 */
1503 static const UDateFormatField fgPatternIndexToDateFormatField[]; 1490 static const UDateFormatField fgPatternIndexToDateFormatField[];
1504 1491
1505 /** 1492 /**
1506 * Lazy TimeZoneFormat instantiation, semantically const 1493 * Lazy TimeZoneFormat instantiation, semantically const
1507 */ 1494 */
1508 TimeZoneFormat *tzFormat() const; 1495 TimeZoneFormat *tzFormat() const;
1509 1496
1497 const NumberFormat* getNumberFormatByIndex(UDateFormatField index) const;
1498
1510 /** 1499 /**
1511 * Used to map Calendar field to field level. 1500 * Used to map Calendar field to field level.
1512 * The larger the level, the smaller the field unit. 1501 * The larger the level, the smaller the field unit.
1513 * For example, UCAL_ERA level is 0, UCAL_YEAR level is 10, 1502 * For example, UCAL_ERA level is 0, UCAL_YEAR level is 10,
1514 * UCAL_MONTH level is 20. 1503 * UCAL_MONTH level is 20.
1515 */ 1504 */
1516 static const int32_t fgCalendarFieldToLevel[]; 1505 static const int32_t fgCalendarFieldToLevel[];
1517 static const int32_t fgPatternCharToLevel[]; 1506
1507 /**
1508 * Map calendar field letter into calendar field level.
1509 */
1510 static int32_t getLevelFromChar(UChar ch);
1511
1512 /**
1513 * Tell if a character can be used to define a field in a format string.
1514 */
1515 static UBool isSyntaxChar(UChar ch);
1518 1516
1519 /** 1517 /**
1520 * The formatting pattern for this formatter. 1518 * The formatting pattern for this formatter.
1521 */ 1519 */
1522 UnicodeString fPattern; 1520 UnicodeString fPattern;
1523 1521
1524 /** 1522 /**
1525 * The numbering system override for dates. 1523 * The numbering system override for dates.
1526 */ 1524 */
1527 UnicodeString fDateOverride; 1525 UnicodeString fDateOverride;
(...skipping 28 matching lines...) Expand all
1556 * defaultCenturyStartYear are only used if explicitly set by the user 1554 * defaultCenturyStartYear are only used if explicitly set by the user
1557 * through the API method parseAmbiguousDatesAsAfter(). 1555 * through the API method parseAmbiguousDatesAsAfter().
1558 */ 1556 */
1559 UDate fDefaultCenturyStart; 1557 UDate fDefaultCenturyStart;
1560 1558
1561 /** 1559 /**
1562 * See documentation for defaultCenturyStart. 1560 * See documentation for defaultCenturyStart.
1563 */ 1561 */
1564 /*transient*/ int32_t fDefaultCenturyStartYear; 1562 /*transient*/ int32_t fDefaultCenturyStartYear;
1565 1563
1566 typedef struct NSOverride { 1564 struct NSOverride : public UMemory {
1567 NumberFormat *nf; 1565 const SharedNumberFormat *snf;
1568 int32_t hash; 1566 int32_t hash;
1569 NSOverride *next; 1567 NSOverride *next;
1570 } NSOverride; 1568 void free();
1569 NSOverride() : snf(NULL), hash(0), next(NULL) {
1570 }
1571 ~NSOverride();
1572 };
1571 1573
1572 NumberFormat **fNumberFormatters; 1574 /**
1573 1575 * The number format in use for each date field. NULL means fall back
1574 NSOverride *fOverrideList; 1576 * to fNumberFormat in DateFormat.
1577 */
1578 const SharedNumberFormat **fSharedNumberFormatters;
1575 1579
1576 UBool fHaveDefaultCentury; 1580 UBool fHaveDefaultCentury;
1577 1581
1578 BreakIterator* fCapitalizationBrkIter; 1582 BreakIterator* fCapitalizationBrkIter;
1579 }; 1583 };
1580 1584
1581 inline UDate 1585 inline UDate
1582 SimpleDateFormat::get2DigitYearStart(UErrorCode& /*status*/) const 1586 SimpleDateFormat::get2DigitYearStart(UErrorCode& /*status*/) const
1583 { 1587 {
1584 return fDefaultCenturyStart; 1588 return fDefaultCenturyStart;
1585 } 1589 }
1586 1590
1587 U_NAMESPACE_END 1591 U_NAMESPACE_END
1588 1592
1589 #endif /* #if !UCONFIG_NO_FORMATTING */ 1593 #endif /* #if !UCONFIG_NO_FORMATTING */
1590 1594
1591 #endif // _SMPDTFMT 1595 #endif // _SMPDTFMT
1592 //eof 1596 //eof
OLDNEW
« no previous file with comments | « source/i18n/unicode/scientificnumberformatter.h ('k') | source/i18n/unicode/tblcoll.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698