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/udat.h"
00029 #include "unicode/ures.h"
00030 
00036 U_NAMESPACE_BEGIN
00037 
00038 /* forward declaration */
00039 class SimpleDateFormat;
00040 class Hashtable;
00041 
00079 class U_I18N_API DateFormatSymbols : public UObject {
00080 public:
00094     DateFormatSymbols(UErrorCode& status);
00095 
00106     DateFormatSymbols(const Locale& locale,
00107                       UErrorCode& status);
00108 
00109 #ifndef U_HIDE_INTERNAL_API
00110 
00126     DateFormatSymbols(const char *type, UErrorCode& status);
00127 
00141     DateFormatSymbols(const Locale& locale,
00142                       const char *type,
00143                       UErrorCode& status);
00144 #endif  /* U_HIDE_INTERNAL_API */
00145 
00150     DateFormatSymbols(const DateFormatSymbols&);
00151 
00156     DateFormatSymbols& operator=(const DateFormatSymbols&);
00157 
00163     virtual ~DateFormatSymbols();
00164 
00172     UBool operator==(const DateFormatSymbols& other) const;
00173 
00181     UBool operator!=(const DateFormatSymbols& other) const { return !operator==(other); }
00182 
00190     const UnicodeString* getEras(int32_t& count) const;
00191 
00198     void setEras(const UnicodeString* eras, int32_t count);
00199 
00207     const UnicodeString* getEraNames(int32_t& count) const;
00208 
00215     void setEraNames(const UnicodeString* eraNames, int32_t count);
00216 
00224     const UnicodeString* getNarrowEras(int32_t& count) const;
00225 
00232     void setNarrowEras(const UnicodeString* narrowEras, int32_t count);
00233 
00240     const UnicodeString* getMonths(int32_t& count) const;
00241 
00249     void setMonths(const UnicodeString* months, int32_t count);
00250 
00258     const UnicodeString* getShortMonths(int32_t& count) const;
00259 
00266     void setShortMonths(const UnicodeString* shortMonths, int32_t count);
00267 
00272     enum DtContextType {
00273          FORMAT,
00274          STANDALONE,
00275          DT_CONTEXT_COUNT
00276     };
00277 
00282     enum DtWidthType {
00283          ABBREVIATED,
00284          WIDE,
00285          NARROW,
00286          DT_WIDTH_COUNT
00287     };
00288 
00297     const UnicodeString* getMonths(int32_t& count, DtContextType context, DtWidthType width) const;
00298 
00308     void setMonths(const UnicodeString* months, int32_t count, DtContextType context, DtWidthType width);
00309 
00316     const UnicodeString* getWeekdays(int32_t& count) const;
00317 
00318 
00325     void setWeekdays(const UnicodeString* weekdays, int32_t count);
00326 
00333     const UnicodeString* getShortWeekdays(int32_t& count) const;
00334 
00341     void setShortWeekdays(const UnicodeString* shortWeekdays, int32_t count);
00342 
00351     const UnicodeString* getWeekdays(int32_t& count, DtContextType context, DtWidthType width) const;
00352 
00361     void setWeekdays(const UnicodeString* weekdays, int32_t count, DtContextType context, DtWidthType width);
00362 
00372     const UnicodeString* getQuarters(int32_t& count, DtContextType context, DtWidthType width) const;
00373 
00384     void setQuarters(const UnicodeString* quarters, int32_t count, DtContextType context, DtWidthType width);
00385 
00392     const UnicodeString* getAmPmStrings(int32_t& count) const;
00393 
00400     void setAmPmStrings(const UnicodeString* ampms, int32_t count);
00401 
00402 #ifndef U_HIDE_INTERNAL_API
00403 
00411     enum EMonthPatternType
00412     {
00413         kLeapMonthPatternFormatWide,
00414         kLeapMonthPatternFormatAbbrev,
00415         kLeapMonthPatternFormatNarrow,
00416         kLeapMonthPatternStandaloneWide,
00417         kLeapMonthPatternStandaloneAbbrev,
00418         kLeapMonthPatternStandaloneNarrow,
00419         kLeapMonthPatternNumeric,
00420         kMonthPatternsCount
00421     };
00422 
00435     const UnicodeString* getLeapMonthPatterns(int32_t& count) const;
00436 
00437 #endif  /* U_HIDE_INTERNAL_API */
00438 
00439 #ifndef U_HIDE_DEPRECATED_API
00440 
00447     const UnicodeString** getZoneStrings(int32_t& rowCount, int32_t& columnCount) const;
00448 #endif  /* U_HIDE_DEPRECATED_API */
00449 
00461     void setZoneStrings(const UnicodeString* const* strings, int32_t rowCount, int32_t columnCount);
00462 
00468     static const UChar * U_EXPORT2 getPatternUChars(void);
00469 
00480     UnicodeString& getLocalPatternChars(UnicodeString& result) const;
00481 
00488     void setLocalPatternChars(const UnicodeString& newLocalPatternChars);
00489 
00495     Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
00496 
00497 #ifndef U_HIDE_INTERNAL_API
00498 
00502     enum ECapitalizationContextUsageType
00503     {
00504         kCapContextUsageOther,
00505         kCapContextUsageMonthFormat,     /* except narrow */
00506         kCapContextUsageMonthStandalone, /* except narrow */
00507         kCapContextUsageMonthNarrow,
00508         kCapContextUsageDayFormat,     /* except narrow */
00509         kCapContextUsageDayStandalone, /* except narrow */
00510         kCapContextUsageDayNarrow,
00511         kCapContextUsageEraWide,
00512         kCapContextUsageEraAbbrev,
00513         kCapContextUsageEraNarrow,
00514         kCapContextUsageZoneLong,
00515         kCapContextUsageZoneShort,
00516         kCapContextUsageMetazoneLong,
00517         kCapContextUsageMetazoneShort,
00518         kCapContextUsageTypeCount
00519     };
00520 #endif  /* U_HIDE_INTERNAL_API */
00521 
00527     virtual UClassID getDynamicClassID() const;
00528 
00534     static UClassID U_EXPORT2 getStaticClassID();
00535 
00536 private:
00537 
00538     friend class SimpleDateFormat;
00539     friend class DateFormatSymbolsSingleSetter; // see udat.cpp
00540 
00544     UnicodeString*  fEras;
00545     int32_t         fErasCount;
00546 
00550     UnicodeString*  fEraNames;
00551     int32_t         fEraNamesCount;
00552 
00556     UnicodeString*  fNarrowEras;
00557     int32_t         fNarrowErasCount;
00558 
00562     UnicodeString*  fMonths;
00563     int32_t         fMonthsCount;
00564 
00568     UnicodeString*  fShortMonths;
00569     int32_t         fShortMonthsCount;
00570 
00574     UnicodeString*  fNarrowMonths;
00575     int32_t         fNarrowMonthsCount;
00576 
00580     UnicodeString*  fStandaloneMonths;
00581     int32_t         fStandaloneMonthsCount;
00582 
00586     UnicodeString*  fStandaloneShortMonths;
00587     int32_t         fStandaloneShortMonthsCount;
00588 
00592     UnicodeString*  fStandaloneNarrowMonths;
00593     int32_t         fStandaloneNarrowMonthsCount;
00594 
00598     UnicodeString*  fWeekdays;
00599     int32_t         fWeekdaysCount;
00600 
00604     UnicodeString*  fShortWeekdays;
00605     int32_t         fShortWeekdaysCount;
00606 
00610     UnicodeString*  fNarrowWeekdays;
00611     int32_t         fNarrowWeekdaysCount;
00612 
00616     UnicodeString*  fStandaloneWeekdays;
00617     int32_t         fStandaloneWeekdaysCount;
00618 
00622     UnicodeString*  fStandaloneShortWeekdays;
00623     int32_t         fStandaloneShortWeekdaysCount;
00624 
00628     UnicodeString*  fStandaloneNarrowWeekdays;
00629     int32_t         fStandaloneNarrowWeekdaysCount;
00630 
00634     UnicodeString*  fAmPms;
00635     int32_t         fAmPmsCount;
00636 
00640     UnicodeString  *fQuarters;
00641     int32_t         fQuartersCount;
00642 
00646     UnicodeString  *fShortQuarters;
00647     int32_t         fShortQuartersCount;
00648 
00652     UnicodeString  *fStandaloneQuarters;
00653     int32_t         fStandaloneQuartersCount;
00654 
00658     UnicodeString  *fStandaloneShortQuarters;
00659     int32_t         fStandaloneShortQuartersCount;
00660 
00664     UnicodeString  *fLeapMonthPatterns;
00665     int32_t         fLeapMonthPatternsCount;
00666 
00670     UnicodeString*  fShortYearNames;
00671     int32_t         fShortYearNamesCount;
00672 
00710     UnicodeString   **fZoneStrings;         // Zone string array set by setZoneStrings
00711     UnicodeString   **fLocaleZoneStrings;   // Zone string array created by the locale
00712     int32_t         fZoneStringsRowCount;
00713     int32_t         fZoneStringsColCount;
00714 
00715     Locale                  fZSFLocale;         // Locale used for getting ZoneStringFormat
00716 
00720     UnicodeString   fLocalPatternChars;
00721 
00722 #ifndef U_HIDE_INTERNAL_API
00723 
00728      UBool fCapitalization[kCapContextUsageTypeCount][2];
00729 #endif
00730 
00731 
00732 private:
00736     char validLocale[ULOC_FULLNAME_CAPACITY];
00737     char actualLocale[ULOC_FULLNAME_CAPACITY];
00738 
00739     DateFormatSymbols(); // default constructor not implemented
00740 
00750     void initializeData(const Locale& locale, const char *type, UErrorCode& status, UBool useLastResortData = FALSE);
00751 
00760     static void assignArray(UnicodeString*& dstArray,
00761                             int32_t& dstCount,
00762                             const UnicodeString* srcArray,
00763                             int32_t srcCount);
00764 
00775     static UBool arrayCompare(const UnicodeString* array1,
00776                              const UnicodeString* array2,
00777                              int32_t count);
00778 
00784     void createZoneStrings(const UnicodeString *const * otherStrings);
00785 
00789     void dispose(void);
00790 
00795     void copyData(const DateFormatSymbols& other);
00796 
00800     void initZoneStringsArray(void);
00801 
00805     void disposeZoneStrings(void);
00806 
00811     static UDateFormatField U_EXPORT2 getPatternCharIndex(UChar c);
00812 
00816     static UBool U_EXPORT2 isNumericField(UDateFormatField f, int32_t count);
00817 
00821     static UBool U_EXPORT2 isNumericPatternChar(UChar c, int32_t count);
00822 };
00823 
00824 U_NAMESPACE_END
00825 
00826 #endif /* #if !UCONFIG_NO_FORMATTING */
00827 
00828 #endif // _DTFMTSYM
00829 //eof

Generated on 25 Nov 2014 for ICU 50.1.2 by  doxygen 1.4.7