Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

dtfmtsym.h

00001 /*  
00002 ********************************************************************************
00003 *   Copyright (C) 1997-2003, 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/uobject.h"
00026 #include "unicode/locid.h"
00027 #include "unicode/resbund.h"
00028 
00029 U_NAMESPACE_BEGIN
00030 
00031 /* forward declaration */
00032 class SimpleDateFormat;
00033 
00071 class U_I18N_API DateFormatSymbols : public UObject {
00072 public:
00086     DateFormatSymbols(UErrorCode& status);
00087 
00098     DateFormatSymbols(const Locale& locale,
00099                       UErrorCode& status);
00100 
00117     DateFormatSymbols(const char *type, UErrorCode& status);
00118 
00132     DateFormatSymbols(const Locale& locale,
00133                       const char *type,
00134                       UErrorCode& status);
00135 
00140     DateFormatSymbols(const DateFormatSymbols&);
00141 
00146     DateFormatSymbols& operator=(const DateFormatSymbols&);
00147 
00153     ~DateFormatSymbols();
00154 
00162     UBool operator==(const DateFormatSymbols& other) const;
00163 
00171     UBool operator!=(const DateFormatSymbols& other) const { return !operator==(other); }
00172 
00180     const UnicodeString* getEras(int32_t& count) const;
00181 
00188     void setEras(const UnicodeString* eras, int32_t count);
00189 
00196     const UnicodeString* getMonths(int32_t& count) const;
00197 
00205     void setMonths(const UnicodeString* months, int32_t count);
00206 
00214     const UnicodeString* getShortMonths(int32_t& count) const;
00215 
00222     void setShortMonths(const UnicodeString* shortMonths, int32_t count);
00223 
00230     const UnicodeString* getWeekdays(int32_t& count) const;
00231 
00238     void setWeekdays(const UnicodeString* weekdays, int32_t count);
00239 
00246     const UnicodeString* getShortWeekdays(int32_t& count) const;
00247 
00254     void setShortWeekdays(const UnicodeString* shortWeekdays, int32_t count);
00255 
00262     const UnicodeString* getAmPmStrings(int32_t& count) const;
00263 
00270     void setAmPmStrings(const UnicodeString* ampms, int32_t count);
00271 
00279     const UnicodeString** getZoneStrings(int32_t& rowCount, int32_t& columnCount) const;
00280 
00288     void setZoneStrings(const UnicodeString* const* strings, int32_t rowCount, int32_t columnCount);
00289 
00295     static const UChar *getPatternUChars(void);
00296 
00303     UnicodeString& getLocalPatternChars(UnicodeString& result) const;
00304 
00311     void setLocalPatternChars(const UnicodeString& newLocalPatternChars);
00312 
00318     Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
00319 
00325     virtual UClassID getDynamicClassID() const;
00326 
00332     static UClassID getStaticClassID();
00333 
00334 private:
00335 
00336     friend class SimpleDateFormat;
00337     friend class DateFormatSymbolsSingleSetter; // see udat.cpp
00338 
00342     UnicodeString*  fEras;
00343     int32_t         fErasCount;
00344 
00348     UnicodeString*  fMonths;
00349     int32_t         fMonthsCount;
00350 
00354     UnicodeString*  fShortMonths;
00355     int32_t         fShortMonthsCount;
00356 
00360     UnicodeString*  fWeekdays;
00361     int32_t         fWeekdaysCount;
00362 
00366     UnicodeString*  fShortWeekdays;
00367     int32_t         fShortWeekdaysCount;
00368 
00372     UnicodeString*  fAmPms;
00373     int32_t         fAmPmsCount;
00374 
00378     UnicodeString** fZoneStrings;
00379     int32_t         fZoneStringsRowCount;
00380     int32_t         fZoneStringsColCount;
00381 
00385     UnicodeString   fLocalPatternChars;
00386 
00387 private:
00391     char validLocale[ULOC_FULLNAME_CAPACITY];
00392     char actualLocale[ULOC_FULLNAME_CAPACITY];
00393 
00394 
00395     /* Sizes for the last resort string arrays */
00396     typedef enum LastResortSize {
00397         kMonthNum = 13,
00398         kMonthLen = 3,
00399 
00400         kDayNum = 8,
00401         kDayLen = 2,
00402 
00403         kAmPmNum = 2,
00404         kAmPmLen = 3,
00405 
00406         kEraNum = 2,
00407         kEraLen = 3,
00408 
00409         kZoneNum = 5,
00410         kZoneLen = 4
00411     } LastResortSize;
00412 
00413     DateFormatSymbols(); // default constructor not implemented
00414 
00415     void initField(UnicodeString **field, int32_t& length, const ResourceBundle &data, UErrorCode &status);
00416     void initField(UnicodeString **field, int32_t& length, const UChar *data, LastResortSize numStr, LastResortSize strLen, UErrorCode &status);
00417 
00427     static ResourceBundle
00428       getData(ResourceBundle &rb, const char *tag, const char *type, UErrorCode& status);
00429 
00430 
00440     void initializeData(const Locale&, const char *type, UErrorCode& status, UBool useLastResortData = FALSE);
00441 
00450     static void assignArray(UnicodeString*& dstArray,
00451                             int32_t& dstCount,
00452                             const UnicodeString* srcArray,
00453                             int32_t srcCount);
00454 
00465     static UBool arrayCompare(const UnicodeString* array1,
00466                              const UnicodeString* array2,
00467                              int32_t count);
00468 
00474     void createZoneStrings(const UnicodeString *const * otherStrings);
00475 
00486     int32_t getZoneIndex(const UnicodeString& ID) const;
00487 
00488     // Internal method; see source for documentation
00489     int32_t _getZoneIndex(const UnicodeString& id) const;
00490 
00494     void dispose(void);
00495 
00500     void copyData(const DateFormatSymbols& other);
00501 
00505     void disposeZoneStrings(void);
00506 };
00507 
00508 U_NAMESPACE_END
00509 
00510 #endif /* #if !UCONFIG_NO_FORMATTING */
00511 
00512 #endif // _DTFMTSYM
00513 //eof

Generated on Wed May 18 17:29:14 2005 for ICU 2.8 by  doxygen 1.4.2