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 #include "unicode/locid.h"
00023 #include "unicode/resbund.h"
00024
00025 U_NAMESPACE_BEGIN
00026
00027
00028 class SimpleDateFormat;
00029
00060 class U_I18N_API DateFormatSymbols {
00061 public:
00075 DateFormatSymbols(UErrorCode& status);
00076
00087 DateFormatSymbols(const Locale& locale,
00088 UErrorCode& status);
00089
00094 DateFormatSymbols(const DateFormatSymbols&);
00095
00100 DateFormatSymbols& operator=(const DateFormatSymbols&);
00101
00107 ~DateFormatSymbols();
00108
00113 UBool operator==(const DateFormatSymbols& other) const;
00114
00119 UBool operator!=(const DateFormatSymbols& other) const { return !operator==(other); }
00120
00126 const UnicodeString* getEras(int32_t& count) const;
00127
00134 void setEras(const UnicodeString* eras, int32_t count);
00135
00142 const UnicodeString* getMonths(int32_t& count) const;
00143
00149 void setMonths(const UnicodeString* months, int32_t count);
00150
00156 const UnicodeString* getShortMonths(int32_t& count) const;
00157
00163 void setShortMonths(const UnicodeString* shortMonths, int32_t count);
00164
00170 const UnicodeString* getWeekdays(int32_t& count) const;
00171
00177 void setWeekdays(const UnicodeString* weekdays, int32_t count);
00178
00184 const UnicodeString* getShortWeekdays(int32_t& count) const;
00185
00191 void setShortWeekdays(const UnicodeString* shortWeekdays, int32_t count);
00192
00198 const UnicodeString* getAmPmStrings(int32_t& count) const;
00199
00205 void setAmPmStrings(const UnicodeString* ampms, int32_t count);
00206
00214 const UnicodeString** getZoneStrings(int32_t& rowCount, int32_t& columnCount) const;
00215
00223 void setZoneStrings(const UnicodeString* const* strings, int32_t rowCount, int32_t columnCount);
00224
00229 static const UnicodeString& getPatternChars(void);
00230
00235 static const UChar *getPatternUChars(void);
00236
00242 UnicodeString& getLocalPatternChars(UnicodeString& result) const;
00243
00250 void setLocalPatternChars(const UnicodeString& newLocalPatternChars);
00251
00252 private:
00256 static const char fgErasTag[];
00257 static const char fgMonthNamesTag[];
00258 static const char fgMonthAbbreviationsTag[];
00259 static const char fgDayNamesTag[];
00260 static const char fgDayAbbreviationsTag[];
00261 static const char fgAmPmMarkersTag[];
00262
00263 static const char fgZoneStringsTag[];
00264 static const char fgLocalPatternCharsTag[];
00265
00266 friend class SimpleDateFormat;
00267
00271 UnicodeString* fEras;
00272 int32_t fErasCount;
00273
00277 UnicodeString* fMonths;
00278 int32_t fMonthsCount;
00279
00283 UnicodeString* fShortMonths;
00284 int32_t fShortMonthsCount;
00285
00289 UnicodeString* fWeekdays;
00290 int32_t fWeekdaysCount;
00291
00295 UnicodeString* fShortWeekdays;
00296 int32_t fShortWeekdaysCount;
00297
00301 UnicodeString* fAmPms;
00302 int32_t fAmPmsCount;
00303
00307 UnicodeString** fZoneStrings;
00308 int32_t fZoneStringsRowCount;
00309 int32_t fZoneStringsColCount;
00310
00314 UnicodeString fLocalPatternChars;
00315
00316 private:
00317
00318
00319 typedef enum LastResortSize {
00320 kMonthNum = 13,
00321 kMonthLen = 3,
00322
00323 kDayNum = 8,
00324 kDayLen = 2,
00325
00326 kAmPmNum = 2,
00327 kAmPmLen = 3,
00328
00329 kEraNum = 2,
00330 kEraLen = 3,
00331
00332 kZoneNum = 5,
00333 kZoneLen = 4
00334 } LastResortSize;
00335
00336 void initField(UnicodeString **field, int32_t& length, const ResourceBundle data, UErrorCode &status);
00337 void initField(UnicodeString **field, int32_t& length, const UChar *data, LastResortSize numStr, LastResortSize strLen, UErrorCode &status);
00338
00342 void initializeData(const Locale&, UErrorCode& status, UBool useLastResortData = FALSE);
00343
00347 static void assignArray(UnicodeString*& dstArray,
00348 int32_t& dstCount,
00349 const UnicodeString* srcArray,
00350 int32_t srcCount);
00351
00356 static UBool arrayCompare(const UnicodeString* array1,
00357 const UnicodeString* array2,
00358 int32_t count);
00359
00366 void createZoneStrings(const UnicodeString *const * otherStrings);
00367
00378 int32_t getZoneIndex(const UnicodeString& ID) const;
00379
00380
00381 int32_t _getZoneIndex(const UnicodeString& id) const;
00382
00387 void dispose(void);
00388
00392 void copyData(const DateFormatSymbols& other);
00393
00398 void disposeZoneStrings(void);
00399 };
00400
00401 U_NAMESPACE_END
00402
00403 #endif // _DTFMTSYM
00404