ICU 49.1.1
49.1.1
|
00001 /* 00002 ******************************************************************************** 00003 * Copyright (C) 1997-2012, International Business Machines 00004 * Corporation and others. All Rights Reserved. 00005 ******************************************************************************** 00006 * 00007 * File DTFMTSYM.H 00008 * 00009 * Modification History: 00010 * 00011 * Date Name Description 00012 * 02/19/97 aliu Converted from java. 00013 * 07/21/98 stephen Added getZoneIndex() 00014 * Changed to match C++ conventions 00015 ******************************************************************************** 00016 */ 00017 00018 #ifndef DTFMTSYM_H 00019 #define DTFMTSYM_H 00020 00021 #include "unicode/utypes.h" 00022 00023 #if !UCONFIG_NO_FORMATTING 00024 00025 #include "unicode/calendar.h" 00026 #include "unicode/uobject.h" 00027 #include "unicode/locid.h" 00028 #include "unicode/ures.h" 00029 00035 U_NAMESPACE_BEGIN 00036 00037 /* forward declaration */ 00038 class SimpleDateFormat; 00039 class Hashtable; 00040 00078 class U_I18N_API DateFormatSymbols : public UObject { 00079 public: 00093 DateFormatSymbols(UErrorCode& status); 00094 00105 DateFormatSymbols(const Locale& locale, 00106 UErrorCode& status); 00107 00108 #ifndef U_HIDE_INTERNAL_API 00109 00125 DateFormatSymbols(const char *type, UErrorCode& status); 00126 00140 DateFormatSymbols(const Locale& locale, 00141 const char *type, 00142 UErrorCode& status); 00143 #endif /* U_HIDE_INTERNAL_API */ 00144 00149 DateFormatSymbols(const DateFormatSymbols&); 00150 00155 DateFormatSymbols& operator=(const DateFormatSymbols&); 00156 00162 virtual ~DateFormatSymbols(); 00163 00171 UBool operator==(const DateFormatSymbols& other) const; 00172 00180 UBool operator!=(const DateFormatSymbols& other) const { return !operator==(other); } 00181 00189 const UnicodeString* getEras(int32_t& count) const; 00190 00197 void setEras(const UnicodeString* eras, int32_t count); 00198 00206 const UnicodeString* getEraNames(int32_t& count) const; 00207 00214 void setEraNames(const UnicodeString* eraNames, int32_t count); 00215 00223 const UnicodeString* getNarrowEras(int32_t& count) const; 00224 00231 void setNarrowEras(const UnicodeString* narrowEras, int32_t count); 00232 00239 const UnicodeString* getMonths(int32_t& count) const; 00240 00248 void setMonths(const UnicodeString* months, int32_t count); 00249 00257 const UnicodeString* getShortMonths(int32_t& count) const; 00258 00265 void setShortMonths(const UnicodeString* shortMonths, int32_t count); 00266 00271 enum DtContextType { 00272 FORMAT, 00273 STANDALONE, 00274 DT_CONTEXT_COUNT 00275 }; 00276 00281 enum DtWidthType { 00282 ABBREVIATED, 00283 WIDE, 00284 NARROW, 00285 DT_WIDTH_COUNT 00286 }; 00287 00296 const UnicodeString* getMonths(int32_t& count, DtContextType context, DtWidthType width) const; 00297 00307 void setMonths(const UnicodeString* months, int32_t count, DtContextType context, DtWidthType width); 00308 00315 const UnicodeString* getWeekdays(int32_t& count) const; 00316 00317 00324 void setWeekdays(const UnicodeString* weekdays, int32_t count); 00325 00332 const UnicodeString* getShortWeekdays(int32_t& count) const; 00333 00340 void setShortWeekdays(const UnicodeString* shortWeekdays, int32_t count); 00341 00350 const UnicodeString* getWeekdays(int32_t& count, DtContextType context, DtWidthType width) const; 00351 00360 void setWeekdays(const UnicodeString* weekdays, int32_t count, DtContextType context, DtWidthType width); 00361 00371 const UnicodeString* getQuarters(int32_t& count, DtContextType context, DtWidthType width) const; 00372 00383 void setQuarters(const UnicodeString* quarters, int32_t count, DtContextType context, DtWidthType width); 00384 00391 const UnicodeString* getAmPmStrings(int32_t& count) const; 00392 00399 void setAmPmStrings(const UnicodeString* ampms, int32_t count); 00400 00401 #ifndef U_HIDE_INTERNAL_API 00402 00410 enum EMonthPatternType 00411 { 00412 kLeapMonthPatternFormatWide, 00413 kLeapMonthPatternFormatAbbrev, 00414 kLeapMonthPatternFormatNarrow, 00415 kLeapMonthPatternStandaloneWide, 00416 kLeapMonthPatternStandaloneAbbrev, 00417 kLeapMonthPatternStandaloneNarrow, 00418 kLeapMonthPatternNumeric, 00419 kMonthPatternsCount 00420 }; 00421 00434 const UnicodeString* getLeapMonthPatterns(int32_t& count) const; 00435 00436 #endif /* U_HIDE_INTERNAL_API */ 00437 00438 #ifndef U_HIDE_DEPRECATED_API 00439 00446 const UnicodeString** getZoneStrings(int32_t& rowCount, int32_t& columnCount) const; 00447 #endif /* U_HIDE_DEPRECATED_API */ 00448 00460 void setZoneStrings(const UnicodeString* const* strings, int32_t rowCount, int32_t columnCount); 00461 00467 static const UChar * U_EXPORT2 getPatternUChars(void); 00468 00479 UnicodeString& getLocalPatternChars(UnicodeString& result) const; 00480 00487 void setLocalPatternChars(const UnicodeString& newLocalPatternChars); 00488 00494 Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; 00495 00496 #ifndef U_HIDE_INTERNAL_API 00497 00501 enum ECapitalizationContextUsageType 00502 { 00503 kCapContextUsageOther, 00504 kCapContextUsageMonthFormat, /* except narrow */ 00505 kCapContextUsageMonthStandalone, /* except narrow */ 00506 kCapContextUsageMonthNarrow, 00507 kCapContextUsageDayFormat, /* except narrow */ 00508 kCapContextUsageDayStandalone, /* except narrow */ 00509 kCapContextUsageDayNarrow, 00510 kCapContextUsageEraWide, 00511 kCapContextUsageEraAbbrev, 00512 kCapContextUsageEraNarrow, 00513 kCapContextUsageZoneLong, 00514 kCapContextUsageZoneShort, 00515 kCapContextUsageMetazoneLong, 00516 kCapContextUsageMetazoneShort, 00517 kCapContextUsageTypeCount 00518 }; 00519 #endif /* U_HIDE_INTERNAL_API */ 00520 00526 virtual UClassID getDynamicClassID() const; 00527 00533 static UClassID U_EXPORT2 getStaticClassID(); 00534 00535 private: 00536 00537 friend class SimpleDateFormat; 00538 friend class DateFormatSymbolsSingleSetter; // see udat.cpp 00539 00543 UnicodeString* fEras; 00544 int32_t fErasCount; 00545 00549 UnicodeString* fEraNames; 00550 int32_t fEraNamesCount; 00551 00555 UnicodeString* fNarrowEras; 00556 int32_t fNarrowErasCount; 00557 00561 UnicodeString* fMonths; 00562 int32_t fMonthsCount; 00563 00567 UnicodeString* fShortMonths; 00568 int32_t fShortMonthsCount; 00569 00573 UnicodeString* fNarrowMonths; 00574 int32_t fNarrowMonthsCount; 00575 00579 UnicodeString* fStandaloneMonths; 00580 int32_t fStandaloneMonthsCount; 00581 00585 UnicodeString* fStandaloneShortMonths; 00586 int32_t fStandaloneShortMonthsCount; 00587 00591 UnicodeString* fStandaloneNarrowMonths; 00592 int32_t fStandaloneNarrowMonthsCount; 00593 00597 UnicodeString* fWeekdays; 00598 int32_t fWeekdaysCount; 00599 00603 UnicodeString* fShortWeekdays; 00604 int32_t fShortWeekdaysCount; 00605 00609 UnicodeString* fNarrowWeekdays; 00610 int32_t fNarrowWeekdaysCount; 00611 00615 UnicodeString* fStandaloneWeekdays; 00616 int32_t fStandaloneWeekdaysCount; 00617 00621 UnicodeString* fStandaloneShortWeekdays; 00622 int32_t fStandaloneShortWeekdaysCount; 00623 00627 UnicodeString* fStandaloneNarrowWeekdays; 00628 int32_t fStandaloneNarrowWeekdaysCount; 00629 00633 UnicodeString* fAmPms; 00634 int32_t fAmPmsCount; 00635 00639 UnicodeString *fQuarters; 00640 int32_t fQuartersCount; 00641 00645 UnicodeString *fShortQuarters; 00646 int32_t fShortQuartersCount; 00647 00651 UnicodeString *fStandaloneQuarters; 00652 int32_t fStandaloneQuartersCount; 00653 00657 UnicodeString *fStandaloneShortQuarters; 00658 int32_t fStandaloneShortQuartersCount; 00659 00663 UnicodeString *fLeapMonthPatterns; 00664 int32_t fLeapMonthPatternsCount; 00665 00669 UnicodeString* fShortYearNames; 00670 int32_t fShortYearNamesCount; 00671 00709 UnicodeString **fZoneStrings; // Zone string array set by setZoneStrings 00710 UnicodeString **fLocaleZoneStrings; // Zone string array created by the locale 00711 int32_t fZoneStringsRowCount; 00712 int32_t fZoneStringsColCount; 00713 00714 Locale fZSFLocale; // Locale used for getting ZoneStringFormat 00715 00719 UnicodeString fLocalPatternChars; 00720 00721 #ifndef U_HIDE_INTERNAL_API 00722 00727 UBool fCapitalization[kCapContextUsageTypeCount][2]; 00728 #endif 00729 00730 00731 private: 00735 char validLocale[ULOC_FULLNAME_CAPACITY]; 00736 char actualLocale[ULOC_FULLNAME_CAPACITY]; 00737 00738 DateFormatSymbols(); // default constructor not implemented 00739 00749 void initializeData(const Locale& locale, const char *type, UErrorCode& status, UBool useLastResortData = FALSE); 00750 00759 static void assignArray(UnicodeString*& dstArray, 00760 int32_t& dstCount, 00761 const UnicodeString* srcArray, 00762 int32_t srcCount); 00763 00774 static UBool arrayCompare(const UnicodeString* array1, 00775 const UnicodeString* array2, 00776 int32_t count); 00777 00783 void createZoneStrings(const UnicodeString *const * otherStrings); 00784 00788 void dispose(void); 00789 00794 void copyData(const DateFormatSymbols& other); 00795 00799 void initZoneStringsArray(void); 00800 00804 void disposeZoneStrings(void); 00805 }; 00806 00807 U_NAMESPACE_END 00808 00809 #endif /* #if !UCONFIG_NO_FORMATTING */ 00810 00811 #endif // _DTFMTSYM 00812 //eof