ICU 49.1.1  49.1.1
dtfmtsym.h
Go to the documentation of this file.
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