ICU 4.8.1.1  4.8.1.1
dtfmtsym.h
Go to the documentation of this file.
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
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines