| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 ******************************************************************************** | |
| 3 * Copyright (C) 1997-2010, International Business Machines | |
| 4 * Corporation and others. All Rights Reserved. | |
| 5 ******************************************************************************** | |
| 6 * | |
| 7 * File DTFMTSYM.H | |
| 8 * | |
| 9 * Modification History: | |
| 10 * | |
| 11 * Date Name Description | |
| 12 * 02/19/97 aliu Converted from java. | |
| 13 * 07/21/98 stephen Added getZoneIndex() | |
| 14 * Changed to match C++ conventions | |
| 15 ******************************************************************************** | |
| 16 */ | |
| 17 | |
| 18 #ifndef DTFMTSYM_H | |
| 19 #define DTFMTSYM_H | |
| 20 | |
| 21 #include "unicode/utypes.h" | |
| 22 | |
| 23 #if !UCONFIG_NO_FORMATTING | |
| 24 | |
| 25 #include "unicode/calendar.h" | |
| 26 #include "unicode/uobject.h" | |
| 27 #include "unicode/locid.h" | |
| 28 #include "unicode/ures.h" | |
| 29 | |
| 30 /** | |
| 31 * \file | |
| 32 * \brief C++ API: Symbols for formatting dates. | |
| 33 */ | |
| 34 | |
| 35 U_NAMESPACE_BEGIN | |
| 36 | |
| 37 /* forward declaration */ | |
| 38 class SimpleDateFormat; | |
| 39 class Hashtable; | |
| 40 class ZoneStringFormat; | |
| 41 class SafeZoneStringFormatPtr; | |
| 42 | |
| 43 /** | |
| 44 * DateFormatSymbols is a public class for encapsulating localizable date-time | |
| 45 * formatting data -- including timezone data. DateFormatSymbols is used by | |
| 46 * DateFormat and SimpleDateFormat. | |
| 47 * <P> | |
| 48 * Rather than first creating a DateFormatSymbols to get a date-time formatter | |
| 49 * by using a SimpleDateFormat constructor, clients are encouraged to create a | |
| 50 * date-time formatter using the getTimeInstance(), getDateInstance(), or | |
| 51 * getDateTimeInstance() method in DateFormat. Each of these methods can return
a | |
| 52 * date/time formatter initialized with a default format pattern along with the | |
| 53 * date-time formatting data for a given or default locale. After a formatter is | |
| 54 * created, clients may modify the format pattern using the setPattern function | |
| 55 * as so desired. For more information on using these formatter factory | |
| 56 * functions, see DateFormat. | |
| 57 * <P> | |
| 58 * If clients decide to create a date-time formatter with a particular format | |
| 59 * pattern and locale, they can do so with new SimpleDateFormat(aPattern, | |
| 60 * new DateFormatSymbols(aLocale)). This will load the appropriate date-time | |
| 61 * formatting data from the locale. | |
| 62 * <P> | |
| 63 * DateFormatSymbols objects are clonable. When clients obtain a | |
| 64 * DateFormatSymbols object, they can feel free to modify the date-time | |
| 65 * formatting data as necessary. For instance, clients can | |
| 66 * replace the localized date-time format pattern characters with the ones that | |
| 67 * they feel easy to remember. Or they can change the representative cities | |
| 68 * originally picked by default to using their favorite ones. | |
| 69 * <P> | |
| 70 * DateFormatSymbols are not expected to be subclassed. Data for a calendar is | |
| 71 * loaded out of resource bundles. The 'type' parameter indicates the type of | |
| 72 * calendar, for example, "gregorian" or "japanese". If the type is not gregori
an | |
| 73 * (or NULL, or an empty string) then the type is appended to the resource name, | |
| 74 * for example, 'Eras_japanese' instead of 'Eras'. If the resource 'Eras_japa
nese' did | |
| 75 * not exist (even in root), then this class will fall back to just 'Eras', that
is, | |
| 76 * Gregorian data. Therefore, the calendar implementor MUST ensure that the roo
t | |
| 77 * locale at least contains any resources that are to be particularized for the | |
| 78 * calendar type. | |
| 79 */ | |
| 80 class U_I18N_API DateFormatSymbols : public UObject { | |
| 81 public: | |
| 82 /** | |
| 83 * Construct a DateFormatSymbols object by loading format data from | |
| 84 * resources for the default locale, in the default calendar (Gregorian). | |
| 85 * <P> | |
| 86 * NOTE: This constructor will never fail; if it cannot get resource | |
| 87 * data for the default locale, it will return a last-resort object | |
| 88 * based on hard-coded strings. | |
| 89 * | |
| 90 * @param status Status code. Failure | |
| 91 * results if the resources for the default cannot be | |
| 92 * found or cannot be loaded | |
| 93 * @stable ICU 2.0 | |
| 94 */ | |
| 95 DateFormatSymbols(UErrorCode& status); | |
| 96 | |
| 97 /** | |
| 98 * Construct a DateFormatSymbols object by loading format data from | |
| 99 * resources for the given locale, in the default calendar (Gregorian). | |
| 100 * | |
| 101 * @param locale Locale to load format data from. | |
| 102 * @param status Status code. Failure | |
| 103 * results if the resources for the locale cannot be | |
| 104 * found or cannot be loaded | |
| 105 * @stable ICU 2.0 | |
| 106 */ | |
| 107 DateFormatSymbols(const Locale& locale, | |
| 108 UErrorCode& status); | |
| 109 | |
| 110 /** | |
| 111 * Construct a DateFormatSymbols object by loading format data from | |
| 112 * resources for the default locale, in the default calendar (Gregorian). | |
| 113 * <P> | |
| 114 * NOTE: This constructor will never fail; if it cannot get resource | |
| 115 * data for the default locale, it will return a last-resort object | |
| 116 * based on hard-coded strings. | |
| 117 * | |
| 118 * @param type Type of calendar (as returned by Calendar::getType). | |
| 119 * Will be used to access the correct set of strings. | |
| 120 * (NULL or empty string defaults to "gregorian".) | |
| 121 * @param status Status code. Failure | |
| 122 * results if the resources for the default cannot be | |
| 123 * found or cannot be loaded | |
| 124 * @internal | |
| 125 */ | |
| 126 DateFormatSymbols(const char *type, UErrorCode& status); | |
| 127 | |
| 128 /** | |
| 129 * Construct a DateFormatSymbols object by loading format data from | |
| 130 * resources for the given locale, in the default calendar (Gregorian). | |
| 131 * | |
| 132 * @param locale Locale to load format data from. | |
| 133 * @param type Type of calendar (as returned by Calendar::getType). | |
| 134 * Will be used to access the correct set of strings. | |
| 135 * (NULL or empty string defaults to "gregorian".) | |
| 136 * @param status Status code. Failure | |
| 137 * results if the resources for the locale cannot be | |
| 138 * found or cannot be loaded | |
| 139 * @internal | |
| 140 */ | |
| 141 DateFormatSymbols(const Locale& locale, | |
| 142 const char *type, | |
| 143 UErrorCode& status); | |
| 144 | |
| 145 /** | |
| 146 * Copy constructor. | |
| 147 * @stable ICU 2.0 | |
| 148 */ | |
| 149 DateFormatSymbols(const DateFormatSymbols&); | |
| 150 | |
| 151 /** | |
| 152 * Assignment operator. | |
| 153 * @stable ICU 2.0 | |
| 154 */ | |
| 155 DateFormatSymbols& operator=(const DateFormatSymbols&); | |
| 156 | |
| 157 /** | |
| 158 * Destructor. This is nonvirtual because this class is not designed to be | |
| 159 * subclassed. | |
| 160 * @stable ICU 2.0 | |
| 161 */ | |
| 162 virtual ~DateFormatSymbols(); | |
| 163 | |
| 164 /** | |
| 165 * Return true if another object is semantically equal to this one. | |
| 166 * | |
| 167 * @param other the DateFormatSymbols object to be compared with. | |
| 168 * @return true if other is semantically equal to this. | |
| 169 * @stable ICU 2.0 | |
| 170 */ | |
| 171 UBool operator==(const DateFormatSymbols& other) const; | |
| 172 | |
| 173 /** | |
| 174 * Return true if another object is semantically unequal to this one. | |
| 175 * | |
| 176 * @param other the DateFormatSymbols object to be compared with. | |
| 177 * @return true if other is semantically unequal to this. | |
| 178 * @stable ICU 2.0 | |
| 179 */ | |
| 180 UBool operator!=(const DateFormatSymbols& other) const { return !operator==(
other); } | |
| 181 | |
| 182 /** | |
| 183 * Gets abbreviated era strings. For example: "AD" and "BC". | |
| 184 * | |
| 185 * @param count Filled in with length of the array. | |
| 186 * @return the era strings. | |
| 187 * @stable ICU 2.0 | |
| 188 */ | |
| 189 const UnicodeString* getEras(int32_t& count) const; | |
| 190 | |
| 191 /** | |
| 192 * Sets abbreviated era strings. For example: "AD" and "BC". | |
| 193 * @param eras Array of era strings (DateFormatSymbols retains ownership.) | |
| 194 * @param count Filled in with length of the array. | |
| 195 * @stable ICU 2.0 | |
| 196 */ | |
| 197 void setEras(const UnicodeString* eras, int32_t count); | |
| 198 | |
| 199 /** | |
| 200 * Gets era name strings. For example: "Anno Domini" and "Before Christ". | |
| 201 * | |
| 202 * @param count Filled in with length of the array. | |
| 203 * @return the era name strings. | |
| 204 * @stable ICU 3.4 | |
| 205 */ | |
| 206 const UnicodeString* getEraNames(int32_t& count) const; | |
| 207 | |
| 208 /** | |
| 209 * Sets era name strings. For example: "Anno Domini" and "Before Christ". | |
| 210 * @param eraNames Array of era name strings (DateFormatSymbols retains own
ership.) | |
| 211 * @param count Filled in with length of the array. | |
| 212 * @stable ICU 3.6 | |
| 213 */ | |
| 214 void setEraNames(const UnicodeString* eraNames, int32_t count); | |
| 215 | |
| 216 /** | |
| 217 * Gets narrow era strings. For example: "A" and "B". | |
| 218 * | |
| 219 * @param count Filled in with length of the array. | |
| 220 * @return the narrow era strings. | |
| 221 * @stable ICU 4.2 | |
| 222 */ | |
| 223 const UnicodeString* getNarrowEras(int32_t& count) const; | |
| 224 | |
| 225 /** | |
| 226 * Sets narrow era strings. For example: "A" and "B". | |
| 227 * @param narrowEras Array of narrow era strings (DateFormatSymbols retains
ownership.) | |
| 228 * @param count Filled in with length of the array. | |
| 229 * @stable ICU 4.2 | |
| 230 */ | |
| 231 void setNarrowEras(const UnicodeString* narrowEras, int32_t count); | |
| 232 | |
| 233 /** | |
| 234 * Gets month strings. For example: "January", "February", etc. | |
| 235 * @param count Filled in with length of the array. | |
| 236 * @return the month strings. (DateFormatSymbols retains ownership.) | |
| 237 * @stable ICU 2.0 | |
| 238 */ | |
| 239 const UnicodeString* getMonths(int32_t& count) const; | |
| 240 | |
| 241 /** | |
| 242 * Sets month strings. For example: "January", "February", etc. | |
| 243 * | |
| 244 * @param months the new month strings. (not adopted; caller retains owne
rship) | |
| 245 * @param count Filled in with length of the array. | |
| 246 * @stable ICU 2.0 | |
| 247 */ | |
| 248 void setMonths(const UnicodeString* months, int32_t count); | |
| 249 | |
| 250 /** | |
| 251 * Gets short month strings. For example: "Jan", "Feb", etc. | |
| 252 * | |
| 253 * @param count Filled in with length of the array. | |
| 254 * @return the short month strings. (DateFormatSymbols retains ownership.) | |
| 255 * @stable ICU 2.0 | |
| 256 */ | |
| 257 const UnicodeString* getShortMonths(int32_t& count) const; | |
| 258 | |
| 259 /** | |
| 260 * Sets short month strings. For example: "Jan", "Feb", etc. | |
| 261 * @param count Filled in with length of the array. | |
| 262 * @param shortMonths the new short month strings. (not adopted; caller ret
ains ownership) | |
| 263 * @stable ICU 2.0 | |
| 264 */ | |
| 265 void setShortMonths(const UnicodeString* shortMonths, int32_t count); | |
| 266 | |
| 267 /** | |
| 268 * Selector for date formatting context | |
| 269 * @stable ICU 3.6 | |
| 270 */ | |
| 271 enum DtContextType { | |
| 272 FORMAT, | |
| 273 STANDALONE, | |
| 274 DT_CONTEXT_COUNT | |
| 275 }; | |
| 276 | |
| 277 /** | |
| 278 * Selector for date formatting width | |
| 279 * @stable ICU 3.6 | |
| 280 */ | |
| 281 enum DtWidthType { | |
| 282 ABBREVIATED, | |
| 283 WIDE, | |
| 284 NARROW, | |
| 285 DT_WIDTH_COUNT | |
| 286 }; | |
| 287 | |
| 288 /** | |
| 289 * Gets month strings by width and context. For example: "January", "Februar
y", etc. | |
| 290 * @param count Filled in with length of the array. | |
| 291 * @param context The formatting context, either FORMAT or STANDALONE | |
| 292 * @param width The width of returned strings, either WIDE, ABBREVIATED, o
r NARROW. | |
| 293 * @return the month strings. (DateFormatSymbols retains ownership.) | |
| 294 * @stable ICU 3.4 | |
| 295 */ | |
| 296 const UnicodeString* getMonths(int32_t& count, DtContextType context, DtWidt
hType width) const; | |
| 297 | |
| 298 /** | |
| 299 * Sets month strings by width and context. For example: "January", "Februar
y", etc. | |
| 300 * | |
| 301 * @param months The new month strings. (not adopted; caller retains owners
hip) | |
| 302 * @param count Filled in with length of the array. | |
| 303 * @param context The formatting context, either FORMAT or STANDALONE | |
| 304 * @param width The width of returned strings, either WIDE, ABBREVIATED, o
r NARROW. | |
| 305 * @stable ICU 3.6 | |
| 306 */ | |
| 307 void setMonths(const UnicodeString* months, int32_t count, DtContextType con
text, DtWidthType width); | |
| 308 | |
| 309 /** | |
| 310 * Gets weekday strings. For example: "Sunday", "Monday", etc. | |
| 311 * @param count Filled in with length of the array. | |
| 312 * @return the weekday strings. (DateFormatSymbols retains ownership.) | |
| 313 * @stable ICU 2.0 | |
| 314 */ | |
| 315 const UnicodeString* getWeekdays(int32_t& count) const; | |
| 316 | |
| 317 | |
| 318 /** | |
| 319 * Sets weekday strings. For example: "Sunday", "Monday", etc. | |
| 320 * @param weekdays the new weekday strings. (not adopted; caller retains
ownership) | |
| 321 * @param count Filled in with length of the array. | |
| 322 * @stable ICU 2.0 | |
| 323 */ | |
| 324 void setWeekdays(const UnicodeString* weekdays, int32_t count); | |
| 325 | |
| 326 /** | |
| 327 * Gets short weekday strings. For example: "Sun", "Mon", etc. | |
| 328 * @param count Filled in with length of the array. | |
| 329 * @return the short weekday strings. (DateFormatSymbols retains
ownership.) | |
| 330 * @stable ICU 2.0 | |
| 331 */ | |
| 332 const UnicodeString* getShortWeekdays(int32_t& count) const; | |
| 333 | |
| 334 /** | |
| 335 * Sets short weekday strings. For example: "Sun", "Mon", etc. | |
| 336 * @param shortWeekdays the new short weekday strings. (not adopted; caller
retains ownership) | |
| 337 * @param count Filled in with length of the array. | |
| 338 * @stable ICU 2.0 | |
| 339 */ | |
| 340 void setShortWeekdays(const UnicodeString* shortWeekdays, int32_t count); | |
| 341 | |
| 342 /** | |
| 343 * Gets weekday strings by width and context. For example: "Sunday", "Monday
", etc. | |
| 344 * @param count Filled in with length of the array. | |
| 345 * @param context The formatting context, either FORMAT or STANDALONE | |
| 346 * @param width The width of returned strings, either WIDE, ABBREVIATED, o
r NARROW | |
| 347 * @return the month strings. (DateFormatSymbols retains ownership.) | |
| 348 * @stable ICU 3.4 | |
| 349 */ | |
| 350 const UnicodeString* getWeekdays(int32_t& count, DtContextType context, DtWi
dthType width) const; | |
| 351 | |
| 352 /** | |
| 353 * Sets weekday strings by width and context. For example: "Sunday", "Monday
", etc. | |
| 354 * @param weekdays The new weekday strings. (not adopted; caller retains ow
nership) | |
| 355 * @param count Filled in with length of the array. | |
| 356 * @param context The formatting context, either FORMAT or STANDALONE | |
| 357 * @param width The width of returned strings, either WIDE, ABBREVIATED,
or NARROW | |
| 358 * @stable ICU 3.6 | |
| 359 */ | |
| 360 void setWeekdays(const UnicodeString* weekdays, int32_t count, DtContextType
context, DtWidthType width); | |
| 361 | |
| 362 /** | |
| 363 * Gets quarter strings by width and context. For example: "1st Quarter", "2
nd Quarter", etc. | |
| 364 * @param count Filled in with length of the array. | |
| 365 * @param context The formatting context, either FORMAT or STANDALONE | |
| 366 * @param width The width of returned strings, either WIDE or ABBREVIATED.
There | |
| 367 * are no NARROW quarters. | |
| 368 * @return the quarter strings. (DateFormatSymbols retains ownership.) | |
| 369 * @stable ICU 3.6 | |
| 370 */ | |
| 371 const UnicodeString* getQuarters(int32_t& count, DtContextType context, DtWi
dthType width) const; | |
| 372 | |
| 373 /** | |
| 374 * Sets quarter strings by width and context. For example: "1st Quarter", "2
nd Quarter", etc. | |
| 375 * | |
| 376 * @param quarters The new quarter strings. (not adopted; caller retains ow
nership) | |
| 377 * @param count Filled in with length of the array. | |
| 378 * @param context The formatting context, either FORMAT or STANDALONE | |
| 379 * @param width The width of returned strings, either WIDE or ABBREVIATED.
There | |
| 380 * are no NARROW quarters. | |
| 381 * @stable ICU 3.6 | |
| 382 */ | |
| 383 void setQuarters(const UnicodeString* quarters, int32_t count, DtContextType
context, DtWidthType width); | |
| 384 | |
| 385 /** | |
| 386 * Gets AM/PM strings. For example: "AM" and "PM". | |
| 387 * @param count Filled in with length of the array. | |
| 388 * @return the weekday strings. (DateFormatSymbols retains owner
ship.) | |
| 389 * @stable ICU 2.0 | |
| 390 */ | |
| 391 const UnicodeString* getAmPmStrings(int32_t& count) const; | |
| 392 | |
| 393 /** | |
| 394 * Sets ampm strings. For example: "AM" and "PM". | |
| 395 * @param ampms the new ampm strings. (not adopted; caller retains ow
nership) | |
| 396 * @param count Filled in with length of the array. | |
| 397 * @stable ICU 2.0 | |
| 398 */ | |
| 399 void setAmPmStrings(const UnicodeString* ampms, int32_t count); | |
| 400 | |
| 401 /** | |
| 402 * Gets timezone strings. These strings are stored in a 2-dimensional array. | |
| 403 * @param rowCount Output param to receive number of rows. | |
| 404 * @param columnCount Output param to receive number of columns. | |
| 405 * @return The timezone strings as a 2-d array. (DateFormatSymb
ols retains ownership.) | |
| 406 * @deprecated ICU 3.6 | |
| 407 */ | |
| 408 const UnicodeString** getZoneStrings(int32_t& rowCount, int32_t& columnCount
) const; | |
| 409 | |
| 410 /** | |
| 411 * Sets timezone strings. These strings are stored in a 2-dimensional array. | |
| 412 * @param strings The timezone strings as a 2-d array to be copied. (n
ot adopted; caller retains ownership) | |
| 413 * @param rowCount The number of rows (count of first index). | |
| 414 * @param columnCount The number of columns (count of second index). | |
| 415 * @stable ICU 2.0 | |
| 416 */ | |
| 417 void setZoneStrings(const UnicodeString* const* strings, int32_t rowCount, i
nt32_t columnCount); | |
| 418 | |
| 419 /** | |
| 420 * Get the non-localized date-time pattern characters. | |
| 421 * @return the non-localized date-time pattern characters | |
| 422 * @stable ICU 2.0 | |
| 423 */ | |
| 424 static const UChar * U_EXPORT2 getPatternUChars(void); | |
| 425 | |
| 426 /** | |
| 427 * Gets localized date-time pattern characters. For example: 'u', 't', etc. | |
| 428 * <p> | |
| 429 * Note: ICU no longer provides localized date-time pattern characters for a
locale | |
| 430 * starting ICU 3.8. This method returns the non-localized date-time patter
n | |
| 431 * characters unless user defined localized data is set by setLocalPatternCh
ars. | |
| 432 * @param result Output param which will receive the localized date-time
pattern characters. | |
| 433 * @return A reference to 'result'. | |
| 434 * @stable ICU 2.0 | |
| 435 */ | |
| 436 UnicodeString& getLocalPatternChars(UnicodeString& result) const; | |
| 437 | |
| 438 /** | |
| 439 * Sets localized date-time pattern characters. For example: 'u', 't', etc. | |
| 440 * @param newLocalPatternChars the new localized date-time | |
| 441 * pattern characters. | |
| 442 * @stable ICU 2.0 | |
| 443 */ | |
| 444 void setLocalPatternChars(const UnicodeString& newLocalPatternChars); | |
| 445 | |
| 446 /** | |
| 447 * Returns the locale for this object. Two flavors are available: | |
| 448 * valid and actual locale. | |
| 449 * @stable ICU 2.8 | |
| 450 */ | |
| 451 Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; | |
| 452 | |
| 453 /** | |
| 454 * ICU "poor man's RTTI", returns a UClassID for the actual class. | |
| 455 * | |
| 456 * @stable ICU 2.2 | |
| 457 */ | |
| 458 virtual UClassID getDynamicClassID() const; | |
| 459 | |
| 460 /** | |
| 461 * ICU "poor man's RTTI", returns a UClassID for this class. | |
| 462 * | |
| 463 * @stable ICU 2.2 | |
| 464 */ | |
| 465 static UClassID U_EXPORT2 getStaticClassID(); | |
| 466 | |
| 467 private: | |
| 468 | |
| 469 friend class SimpleDateFormat; | |
| 470 friend class DateFormatSymbolsSingleSetter; // see udat.cpp | |
| 471 | |
| 472 /** | |
| 473 * Abbreviated era strings. For example: "AD" and "BC". | |
| 474 */ | |
| 475 UnicodeString* fEras; | |
| 476 int32_t fErasCount; | |
| 477 | |
| 478 /** | |
| 479 * Era name strings. For example: "Anno Domini" and "Before Christ". | |
| 480 */ | |
| 481 UnicodeString* fEraNames; | |
| 482 int32_t fEraNamesCount; | |
| 483 | |
| 484 /** | |
| 485 * Narrow era strings. For example: "A" and "B". | |
| 486 */ | |
| 487 UnicodeString* fNarrowEras; | |
| 488 int32_t fNarrowErasCount; | |
| 489 | |
| 490 /** | |
| 491 * Month strings. For example: "January", "February", etc. | |
| 492 */ | |
| 493 UnicodeString* fMonths; | |
| 494 int32_t fMonthsCount; | |
| 495 | |
| 496 /** | |
| 497 * Short month strings. For example: "Jan", "Feb", etc. | |
| 498 */ | |
| 499 UnicodeString* fShortMonths; | |
| 500 int32_t fShortMonthsCount; | |
| 501 | |
| 502 /** | |
| 503 * Narrow month strings. For example: "J", "F", etc. | |
| 504 */ | |
| 505 UnicodeString* fNarrowMonths; | |
| 506 int32_t fNarrowMonthsCount; | |
| 507 | |
| 508 /** | |
| 509 * Standalone Month strings. For example: "January", "February", etc. | |
| 510 */ | |
| 511 UnicodeString* fStandaloneMonths; | |
| 512 int32_t fStandaloneMonthsCount; | |
| 513 | |
| 514 /** | |
| 515 * Standalone Short month strings. For example: "Jan", "Feb", etc. | |
| 516 */ | |
| 517 UnicodeString* fStandaloneShortMonths; | |
| 518 int32_t fStandaloneShortMonthsCount; | |
| 519 | |
| 520 /** | |
| 521 * Standalone Narrow month strings. For example: "J", "F", etc. | |
| 522 */ | |
| 523 UnicodeString* fStandaloneNarrowMonths; | |
| 524 int32_t fStandaloneNarrowMonthsCount; | |
| 525 | |
| 526 /** | |
| 527 * Weekday strings. For example: "Sunday", "Monday", etc. | |
| 528 */ | |
| 529 UnicodeString* fWeekdays; | |
| 530 int32_t fWeekdaysCount; | |
| 531 | |
| 532 /** | |
| 533 * Short weekday strings. For example: "Sun", "Mon", etc. | |
| 534 */ | |
| 535 UnicodeString* fShortWeekdays; | |
| 536 int32_t fShortWeekdaysCount; | |
| 537 | |
| 538 /** | |
| 539 * Narrow weekday strings. For example: "Sun", "Mon", etc. | |
| 540 */ | |
| 541 UnicodeString* fNarrowWeekdays; | |
| 542 int32_t fNarrowWeekdaysCount; | |
| 543 | |
| 544 /** | |
| 545 * Standalone Weekday strings. For example: "Sunday", "Monday", etc. | |
| 546 */ | |
| 547 UnicodeString* fStandaloneWeekdays; | |
| 548 int32_t fStandaloneWeekdaysCount; | |
| 549 | |
| 550 /** | |
| 551 * Standalone Short weekday strings. For example: "Sun", "Mon", etc. | |
| 552 */ | |
| 553 UnicodeString* fStandaloneShortWeekdays; | |
| 554 int32_t fStandaloneShortWeekdaysCount; | |
| 555 | |
| 556 /** | |
| 557 * Standalone Narrow weekday strings. For example: "Sun", "Mon", etc. | |
| 558 */ | |
| 559 UnicodeString* fStandaloneNarrowWeekdays; | |
| 560 int32_t fStandaloneNarrowWeekdaysCount; | |
| 561 | |
| 562 /** | |
| 563 * Ampm strings. For example: "AM" and "PM". | |
| 564 */ | |
| 565 UnicodeString* fAmPms; | |
| 566 int32_t fAmPmsCount; | |
| 567 | |
| 568 /** | |
| 569 * Quarter strings. For example: "1st quarter", "2nd quarter", etc. | |
| 570 */ | |
| 571 UnicodeString *fQuarters; | |
| 572 int32_t fQuartersCount; | |
| 573 | |
| 574 /** | |
| 575 * Short quarters. For example: "Q1", "Q2", etc. | |
| 576 */ | |
| 577 UnicodeString *fShortQuarters; | |
| 578 int32_t fShortQuartersCount; | |
| 579 | |
| 580 /** | |
| 581 * Standalone quarter strings. For example: "1st quarter", "2nd quarter", et
c. | |
| 582 */ | |
| 583 UnicodeString *fStandaloneQuarters; | |
| 584 int32_t fStandaloneQuartersCount; | |
| 585 | |
| 586 /** | |
| 587 * Standalone short quarter strings. For example: "Q1", "Q2", etc. | |
| 588 */ | |
| 589 UnicodeString *fStandaloneShortQuarters; | |
| 590 int32_t fStandaloneShortQuartersCount; | |
| 591 | |
| 592 /** | |
| 593 * Localized names of time zones in this locale. This is a | |
| 594 * two-dimensional array of strings of size n by m, | |
| 595 * where m is at least 5 and up to 7. Each of the n rows is an | |
| 596 * entry containing the localized names for a single TimeZone. | |
| 597 * | |
| 598 * Each such row contains (with i ranging from 0..n-1): | |
| 599 * | |
| 600 * zoneStrings[i][0] - time zone ID | |
| 601 * example: America/Los_Angeles | |
| 602 * zoneStrings[i][1] - long name of zone in standard time | |
| 603 * example: Pacific Standard Time | |
| 604 * zoneStrings[i][2] - short name of zone in standard time | |
| 605 * example: PST | |
| 606 * zoneStrings[i][3] - long name of zone in daylight savings time | |
| 607 * example: Pacific Daylight Time | |
| 608 * zoneStrings[i][4] - short name of zone in daylight savings time | |
| 609 * example: PDT | |
| 610 * zoneStrings[i][5] - location name of zone | |
| 611 * example: United States (Los Angeles) | |
| 612 * zoneStrings[i][6] - long generic name of zone | |
| 613 * example: Pacific Time | |
| 614 * zoneStrings[i][7] - short generic of zone | |
| 615 * example: PT | |
| 616 * | |
| 617 * The zone ID is not localized; it corresponds to the ID | |
| 618 * value associated with a system time zone object. All other entries | |
| 619 * are localized names. If a zone does not implement daylight savings | |
| 620 * time, the daylight savings time names are ignored. | |
| 621 * | |
| 622 * Note:CLDR 1.5 introduced metazone and its historical mappings. | |
| 623 * This simple two-dimensional array is no longer sufficient to represent | |
| 624 * localized names and its historic changes. Since ICU 3.8.1, localized | |
| 625 * zone names extracted from ICU locale data is stored in a ZoneStringFormat | |
| 626 * instance. But we still need to support the old way of customizing | |
| 627 * localized zone names, so we keep this field for the purpose. | |
| 628 */ | |
| 629 UnicodeString **fZoneStrings; // Zone string array set by setZoneS
trings | |
| 630 UnicodeString **fLocaleZoneStrings; // Zone string array created by the
locale | |
| 631 int32_t fZoneStringsRowCount; | |
| 632 int32_t fZoneStringsColCount; | |
| 633 | |
| 634 const ZoneStringFormat *fZoneStringFormat; | |
| 635 ZoneStringFormat *fZSFLocal; // Local ZoneStringFormat instan
ce | |
| 636 SafeZoneStringFormatPtr *fZSFCachePtr; // Cached ZoneStringFormat | |
| 637 Locale fZSFLocale; // Locale used for getting ZoneS
tringFormat | |
| 638 | |
| 639 /** | |
| 640 * Pattern string used for localized time zone GMT format. For example, "GM
T{0}" | |
| 641 */ | |
| 642 UnicodeString fGmtFormat; | |
| 643 | |
| 644 /** | |
| 645 * Pattern strings used for formatting zone offset in a localized time zone
GMT string. | |
| 646 */ | |
| 647 UnicodeString *fGmtHourFormats; | |
| 648 int32_t fGmtHourFormatsCount; | |
| 649 | |
| 650 enum GMTHourType { | |
| 651 GMT_NEGATIVE_HMS = 0, | |
| 652 GMT_NEGATIVE_HM, | |
| 653 GMT_POSITIVE_HMS, | |
| 654 GMT_POSITIVE_HM, | |
| 655 GMT_HOUR_COUNT | |
| 656 }; | |
| 657 | |
| 658 /** | |
| 659 * Localized date-time pattern characters. For example: use 'u' as 'y'. | |
| 660 */ | |
| 661 UnicodeString fLocalPatternChars; | |
| 662 | |
| 663 private: | |
| 664 /** valid/actual locale information | |
| 665 * these are always ICU locales, so the length should not be a problem | |
| 666 */ | |
| 667 char validLocale[ULOC_FULLNAME_CAPACITY]; | |
| 668 char actualLocale[ULOC_FULLNAME_CAPACITY]; | |
| 669 | |
| 670 DateFormatSymbols(); // default constructor not implemented | |
| 671 | |
| 672 /** | |
| 673 * Called by the constructors to actually load data from the resources | |
| 674 * | |
| 675 * @param locale The locale to get symbols for. | |
| 676 * @param type Calendar Type (as from Calendar::getType()) | |
| 677 * @param status Input/output parameter, set to success or | |
| 678 * failure code upon return. | |
| 679 * @param useLastResortData determine if use last resort data | |
| 680 */ | |
| 681 void initializeData(const Locale&, const char *type, UErrorCode& status, UBo
ol useLastResortData = FALSE); | |
| 682 | |
| 683 /** | |
| 684 * Copy or alias an array in another object, as appropriate. | |
| 685 * | |
| 686 * @param dstArray the copy destination array. | |
| 687 * @param dstCount fill in with the lenth of 'dstArray'. | |
| 688 * @param srcArray the source array to be copied. | |
| 689 * @param srcCount the length of items to be copied from the 'srcArray'. | |
| 690 */ | |
| 691 static void assignArray(UnicodeString*& dstArray, | |
| 692 int32_t& dstCount, | |
| 693 const UnicodeString* srcArray, | |
| 694 int32_t srcCount); | |
| 695 | |
| 696 /** | |
| 697 * Return true if the given arrays' contents are equal, or if the arrays are | |
| 698 * identical (pointers are equal). | |
| 699 * | |
| 700 * @param array1 one array to be compared with. | |
| 701 * @param array2 another array to be compared with. | |
| 702 * @param count the length of items to be copied. | |
| 703 * @return true if the given arrays' contents are equal, or if the a
rrays are | |
| 704 * identical (pointers are equal). | |
| 705 */ | |
| 706 static UBool arrayCompare(const UnicodeString* array1, | |
| 707 const UnicodeString* array2, | |
| 708 int32_t count); | |
| 709 | |
| 710 /** | |
| 711 * Create a copy, in fZoneStrings, of the given zone strings array. The | |
| 712 * member variables fZoneStringsRowCount and fZoneStringsColCount should be | |
| 713 * set already by the caller. | |
| 714 */ | |
| 715 void createZoneStrings(const UnicodeString *const * otherStrings); | |
| 716 | |
| 717 /** | |
| 718 * Delete all the storage owned by this object. | |
| 719 */ | |
| 720 void dispose(void); | |
| 721 | |
| 722 /** | |
| 723 * Copy all of the other's data to this. | |
| 724 * @param other the object to be copied. | |
| 725 */ | |
| 726 void copyData(const DateFormatSymbols& other); | |
| 727 | |
| 728 | |
| 729 /** | |
| 730 * Returns a ZoneStringFormat, used only by SimpleDateFormat for now. | |
| 731 */ | |
| 732 const ZoneStringFormat* getZoneStringFormat(void) const; | |
| 733 | |
| 734 /** | |
| 735 * Create a ZoneStringFormat by locale if not yet availble | |
| 736 */ | |
| 737 void initZoneStringFormat(void); | |
| 738 | |
| 739 /** | |
| 740 * Create zone strings array by locale if not yet available | |
| 741 */ | |
| 742 void initZoneStringsArray(void); | |
| 743 | |
| 744 /** | |
| 745 * Delete just the zone strings. | |
| 746 */ | |
| 747 void disposeZoneStrings(void); | |
| 748 }; | |
| 749 | |
| 750 U_NAMESPACE_END | |
| 751 | |
| 752 #endif /* #if !UCONFIG_NO_FORMATTING */ | |
| 753 | |
| 754 #endif // _DTFMTSYM | |
| 755 //eof | |
| OLD | NEW |