00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
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
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;
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;
00573 UnicodeString **fLocaleZoneStrings;
00574 int32_t fZoneStringsRowCount;
00575 int32_t fZoneStringsColCount;
00576
00577 const ZoneStringFormat *fZoneStringFormat;
00578 ZoneStringFormat *fZSFLocal;
00579 SafeZoneStringFormatPtr *fZSFCachePtr;
00580 Locale fZSFLocale;
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();
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
00696
00697 #endif // _DTFMTSYM
00698