ICU 4.8.1.1
4.8.1.1
|
00001 /* 00002 ******************************************************************************** 00003 * Copyright (C) 1997-2011, 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 00124 DateFormatSymbols(const char *type, UErrorCode& status); 00125 00139 DateFormatSymbols(const Locale& locale, 00140 const char *type, 00141 UErrorCode& status); 00142 00147 DateFormatSymbols(const DateFormatSymbols&); 00148 00153 DateFormatSymbols& operator=(const DateFormatSymbols&); 00154 00160 virtual ~DateFormatSymbols(); 00161 00169 UBool operator==(const DateFormatSymbols& other) const; 00170 00178 UBool operator!=(const DateFormatSymbols& other) const { return !operator==(other); } 00179 00187 const UnicodeString* getEras(int32_t& count) const; 00188 00195 void setEras(const UnicodeString* eras, int32_t count); 00196 00204 const UnicodeString* getEraNames(int32_t& count) const; 00205 00212 void setEraNames(const UnicodeString* eraNames, int32_t count); 00213 00221 const UnicodeString* getNarrowEras(int32_t& count) const; 00222 00229 void setNarrowEras(const UnicodeString* narrowEras, int32_t count); 00230 00237 const UnicodeString* getMonths(int32_t& count) const; 00238 00246 void setMonths(const UnicodeString* months, int32_t count); 00247 00255 const UnicodeString* getShortMonths(int32_t& count) const; 00256 00263 void setShortMonths(const UnicodeString* shortMonths, int32_t count); 00264 00269 enum DtContextType { 00270 FORMAT, 00271 STANDALONE, 00272 DT_CONTEXT_COUNT 00273 }; 00274 00279 enum DtWidthType { 00280 ABBREVIATED, 00281 WIDE, 00282 NARROW, 00283 DT_WIDTH_COUNT 00284 }; 00285 00294 const UnicodeString* getMonths(int32_t& count, DtContextType context, DtWidthType width) const; 00295 00305 void setMonths(const UnicodeString* months, int32_t count, DtContextType context, DtWidthType width); 00306 00313 const UnicodeString* getWeekdays(int32_t& count) const; 00314 00315 00322 void setWeekdays(const UnicodeString* weekdays, int32_t count); 00323 00330 const UnicodeString* getShortWeekdays(int32_t& count) const; 00331 00338 void setShortWeekdays(const UnicodeString* shortWeekdays, int32_t count); 00339 00348 const UnicodeString* getWeekdays(int32_t& count, DtContextType context, DtWidthType width) const; 00349 00358 void setWeekdays(const UnicodeString* weekdays, int32_t count, DtContextType context, DtWidthType width); 00359 00369 const UnicodeString* getQuarters(int32_t& count, DtContextType context, DtWidthType width) const; 00370 00381 void setQuarters(const UnicodeString* quarters, int32_t count, DtContextType context, DtWidthType width); 00382 00389 const UnicodeString* getAmPmStrings(int32_t& count) const; 00390 00397 void setAmPmStrings(const UnicodeString* ampms, int32_t count); 00398 00406 const UnicodeString** getZoneStrings(int32_t& rowCount, int32_t& columnCount) const; 00407 00419 void setZoneStrings(const UnicodeString* const* strings, int32_t rowCount, int32_t columnCount); 00420 00426 static const UChar * U_EXPORT2 getPatternUChars(void); 00427 00438 UnicodeString& getLocalPatternChars(UnicodeString& result) const; 00439 00446 void setLocalPatternChars(const UnicodeString& newLocalPatternChars); 00447 00453 Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; 00454 00460 virtual UClassID getDynamicClassID() const; 00461 00467 static UClassID U_EXPORT2 getStaticClassID(); 00468 00469 private: 00470 00471 friend class SimpleDateFormat; 00472 friend class DateFormatSymbolsSingleSetter; // see udat.cpp 00473 00477 UnicodeString* fEras; 00478 int32_t fErasCount; 00479 00483 UnicodeString* fEraNames; 00484 int32_t fEraNamesCount; 00485 00489 UnicodeString* fNarrowEras; 00490 int32_t fNarrowErasCount; 00491 00495 UnicodeString* fMonths; 00496 int32_t fMonthsCount; 00497 00501 UnicodeString* fShortMonths; 00502 int32_t fShortMonthsCount; 00503 00507 UnicodeString* fNarrowMonths; 00508 int32_t fNarrowMonthsCount; 00509 00513 UnicodeString* fStandaloneMonths; 00514 int32_t fStandaloneMonthsCount; 00515 00519 UnicodeString* fStandaloneShortMonths; 00520 int32_t fStandaloneShortMonthsCount; 00521 00525 UnicodeString* fStandaloneNarrowMonths; 00526 int32_t fStandaloneNarrowMonthsCount; 00527 00531 UnicodeString* fWeekdays; 00532 int32_t fWeekdaysCount; 00533 00537 UnicodeString* fShortWeekdays; 00538 int32_t fShortWeekdaysCount; 00539 00543 UnicodeString* fNarrowWeekdays; 00544 int32_t fNarrowWeekdaysCount; 00545 00549 UnicodeString* fStandaloneWeekdays; 00550 int32_t fStandaloneWeekdaysCount; 00551 00555 UnicodeString* fStandaloneShortWeekdays; 00556 int32_t fStandaloneShortWeekdaysCount; 00557 00561 UnicodeString* fStandaloneNarrowWeekdays; 00562 int32_t fStandaloneNarrowWeekdaysCount; 00563 00567 UnicodeString* fAmPms; 00568 int32_t fAmPmsCount; 00569 00573 UnicodeString *fQuarters; 00574 int32_t fQuartersCount; 00575 00579 UnicodeString *fShortQuarters; 00580 int32_t fShortQuartersCount; 00581 00585 UnicodeString *fStandaloneQuarters; 00586 int32_t fStandaloneQuartersCount; 00587 00591 UnicodeString *fStandaloneShortQuarters; 00592 int32_t fStandaloneShortQuartersCount; 00593 00631 UnicodeString **fZoneStrings; // Zone string array set by setZoneStrings 00632 UnicodeString **fLocaleZoneStrings; // Zone string array created by the locale 00633 int32_t fZoneStringsRowCount; 00634 int32_t fZoneStringsColCount; 00635 00636 Locale fZSFLocale; // Locale used for getting ZoneStringFormat 00637 00641 UnicodeString fGmtZero; 00642 00646 UnicodeString fGmtFormat; 00647 00651 UnicodeString *fGmtHourFormats; 00652 int32_t fGmtHourFormatsCount; 00653 00654 enum GMTHourType { 00655 GMT_NEGATIVE_HMS = 0, 00656 GMT_NEGATIVE_HM, 00657 GMT_POSITIVE_HMS, 00658 GMT_POSITIVE_HM, 00659 GMT_HOUR_COUNT 00660 }; 00661 00665 UnicodeString fLocalPatternChars; 00666 00667 private: 00671 char validLocale[ULOC_FULLNAME_CAPACITY]; 00672 char actualLocale[ULOC_FULLNAME_CAPACITY]; 00673 00674 DateFormatSymbols(); // default constructor not implemented 00675 00685 void initializeData(const Locale& locale, const char *type, UErrorCode& status, UBool useLastResortData = FALSE); 00686 00695 static void assignArray(UnicodeString*& dstArray, 00696 int32_t& dstCount, 00697 const UnicodeString* srcArray, 00698 int32_t srcCount); 00699 00710 static UBool arrayCompare(const UnicodeString* array1, 00711 const UnicodeString* array2, 00712 int32_t count); 00713 00719 void createZoneStrings(const UnicodeString *const * otherStrings); 00720 00724 void dispose(void); 00725 00730 void copyData(const DateFormatSymbols& other); 00731 00735 void initZoneStringsArray(void); 00736 00740 void disposeZoneStrings(void); 00741 }; 00742 00743 U_NAMESPACE_END 00744 00745 #endif /* #if !UCONFIG_NO_FORMATTING */ 00746 00747 #endif // _DTFMTSYM 00748 //eof