dtfmtsym.h

Go to the documentation of this file.
00001 /*  
00002 ********************************************************************************
00003 *   Copyright (C) 1997-2007, 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 class ZoneStringFormat;
00041 class SafeZoneStringFormatPtr;
00042 
00080 class U_I18N_API DateFormatSymbols : public UObject {
00081 public:
00095     DateFormatSymbols(UErrorCode& status);
00096 
00107     DateFormatSymbols(const Locale& locale,
00108                       UErrorCode& status);
00109 
00126     DateFormatSymbols(const char *type, UErrorCode& status);
00127 
00141     DateFormatSymbols(const Locale& locale,
00142                       const char *type,
00143                       UErrorCode& status);
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 
00222     const UnicodeString* getMonths(int32_t& count) const;
00223 
00231     void setMonths(const UnicodeString* months, int32_t count);
00232 
00240     const UnicodeString* getShortMonths(int32_t& count) const;
00241 
00248     void setShortMonths(const UnicodeString* shortMonths, int32_t count);
00249 
00254     enum DtContextType {
00255          FORMAT,
00256          STANDALONE,
00257          DT_CONTEXT_COUNT
00258     };
00259 
00264     enum DtWidthType {
00265          ABBREVIATED,
00266          WIDE,
00267          NARROW,
00268          DT_WIDTH_COUNT
00269     };
00270 
00279     const UnicodeString* getMonths(int32_t& count, DtContextType context, DtWidthType width) const;
00280 
00290     void setMonths(const UnicodeString* months, int32_t count, DtContextType context, DtWidthType width);
00291 
00298     const UnicodeString* getWeekdays(int32_t& count) const;
00299 
00300 
00307     void setWeekdays(const UnicodeString* weekdays, int32_t count);
00308 
00315     const UnicodeString* getShortWeekdays(int32_t& count) const;
00316 
00323     void setShortWeekdays(const UnicodeString* shortWeekdays, int32_t count);
00324 
00333     const UnicodeString* getWeekdays(int32_t& count, DtContextType context, DtWidthType width) const;
00334 
00343     void setWeekdays(const UnicodeString* weekdays, int32_t count, DtContextType context, DtWidthType width);
00344 
00354     const UnicodeString* getQuarters(int32_t& count, DtContextType context, DtWidthType width) const;
00355 
00366     void setQuarters(const UnicodeString* quarters, int32_t count, DtContextType context, DtWidthType width);
00367 
00374     const UnicodeString* getAmPmStrings(int32_t& count) const;
00375 
00382     void setAmPmStrings(const UnicodeString* ampms, int32_t count);
00383 
00391     const UnicodeString** getZoneStrings(int32_t& rowCount, int32_t& columnCount) const;
00392 
00400     void setZoneStrings(const UnicodeString* const* strings, int32_t rowCount, int32_t columnCount);
00401 
00407     static const UChar * U_EXPORT2 getPatternUChars(void);
00408 
00419     UnicodeString& getLocalPatternChars(UnicodeString& result) const;
00420 
00427     void setLocalPatternChars(const UnicodeString& newLocalPatternChars);
00428 
00434     Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
00435 
00441     virtual UClassID getDynamicClassID() const;
00442 
00448     static UClassID U_EXPORT2 getStaticClassID();
00449 
00450 private:
00451 
00452     friend class SimpleDateFormat;
00453     friend class DateFormatSymbolsSingleSetter; // see udat.cpp
00454 
00458     UnicodeString*  fEras;
00459     int32_t         fErasCount;
00460 
00464     UnicodeString*  fEraNames;
00465     int32_t         fEraNamesCount;
00466 
00470     UnicodeString*  fMonths;
00471     int32_t         fMonthsCount;
00472 
00476     UnicodeString*  fShortMonths;
00477     int32_t         fShortMonthsCount;
00478 
00482     UnicodeString*  fNarrowMonths;
00483     int32_t         fNarrowMonthsCount;
00484 
00488     UnicodeString*  fStandaloneMonths;
00489     int32_t         fStandaloneMonthsCount;
00490 
00494     UnicodeString*  fStandaloneShortMonths;
00495     int32_t         fStandaloneShortMonthsCount;
00496 
00500     UnicodeString*  fStandaloneNarrowMonths;
00501     int32_t         fStandaloneNarrowMonthsCount;
00502 
00506     UnicodeString*  fWeekdays;
00507     int32_t         fWeekdaysCount;
00508 
00512     UnicodeString*  fShortWeekdays;
00513     int32_t         fShortWeekdaysCount;
00514 
00518     UnicodeString*  fNarrowWeekdays;
00519     int32_t         fNarrowWeekdaysCount;
00520 
00524     UnicodeString*  fStandaloneWeekdays;
00525     int32_t         fStandaloneWeekdaysCount;
00526 
00530     UnicodeString*  fStandaloneShortWeekdays;
00531     int32_t         fStandaloneShortWeekdaysCount;
00532 
00536     UnicodeString*  fStandaloneNarrowWeekdays;
00537     int32_t         fStandaloneNarrowWeekdaysCount;
00538 
00542     UnicodeString*  fAmPms;
00543     int32_t         fAmPmsCount;
00544 
00548     UnicodeString  *fQuarters;
00549     int32_t         fQuartersCount;
00550 
00554     UnicodeString  *fShortQuarters;
00555     int32_t         fShortQuartersCount;
00556 
00560     UnicodeString  *fStandaloneQuarters;
00561     int32_t         fStandaloneQuartersCount;
00562 
00566     UnicodeString  *fStandaloneShortQuarters;
00567     int32_t         fStandaloneShortQuartersCount;
00568 
00572     UnicodeString   **fZoneStrings;         // Zone string array set by setZoneStrings
00573     UnicodeString   **fLocaleZoneStrings;   // Zone string array created by the locale
00574     int32_t         fZoneStringsRowCount;
00575     int32_t         fZoneStringsColCount;
00576 
00577     const ZoneStringFormat  *fZoneStringFormat;
00578     ZoneStringFormat        *fZSFLocal;         // Local ZoneStringFormat instance
00579     SafeZoneStringFormatPtr *fZSFCachePtr;      // Cached ZoneStringFormat
00580     Locale                  fZSFLocale;         // Locale used for getting ZoneStringFormat
00581 
00585     UnicodeString   fGmtFormat;
00586 
00590     UnicodeString  *fGmtHourFormats;
00591     int32_t         fGmtHourFormatsCount; 
00592 
00593     enum GMTHourType {
00594         GMT_NEGATIVE_HMS = 0,
00595         GMT_NEGATIVE_HM,
00596         GMT_POSITIVE_HMS,
00597         GMT_POSITIVE_HM,
00598         GMT_HOUR_COUNT
00599     };
00600 
00604     UnicodeString   fLocalPatternChars;
00605 
00606 private:
00610     char validLocale[ULOC_FULLNAME_CAPACITY];
00611     char actualLocale[ULOC_FULLNAME_CAPACITY];
00612 
00613     DateFormatSymbols(); // default constructor not implemented
00614 
00624     void initializeData(const Locale&, const char *type, UErrorCode& status, UBool useLastResortData = FALSE);
00625 
00634     static void assignArray(UnicodeString*& dstArray,
00635                             int32_t& dstCount,
00636                             const UnicodeString* srcArray,
00637                             int32_t srcCount);
00638 
00649     static UBool arrayCompare(const UnicodeString* array1,
00650                              const UnicodeString* array2,
00651                              int32_t count);
00652 
00658     void createZoneStrings(const UnicodeString *const * otherStrings);
00659 
00663     void dispose(void);
00664 
00669     void copyData(const DateFormatSymbols& other);
00670 
00671 
00675     const ZoneStringFormat* getZoneStringFormat(void) const;
00676 
00680     void initZoneStringFormat(void);
00681 
00685     void initZoneStringsArray(void);
00686 
00690     void disposeZoneStrings(void);
00691 };
00692 
00693 U_NAMESPACE_END
00694 
00695 #endif /* #if !UCONFIG_NO_FORMATTING */
00696 
00697 #endif // _DTFMTSYM
00698 //eof

Generated on Sun Aug 22 15:43:58 2010 for ICU 4.0.1 by  doxygen 1.3.9.1