00001
00002
00003
00004
00005
00006
00007 #ifndef __TZNAMES_H
00008 #define __TZNAMES_H
00009
00014 #include "unicode/utypes.h"
00015
00016 #if !UCONFIG_NO_FORMATTING
00017
00018 #include "unicode/uloc.h"
00019 #include "unicode/unistr.h"
00020
00021 U_CDECL_BEGIN
00022
00027 typedef enum UTimeZoneNameType {
00032 UTZNM_UNKNOWN = 0x00,
00037 UTZNM_LONG_GENERIC = 0x01,
00042 UTZNM_LONG_STANDARD = 0x02,
00047 UTZNM_LONG_DAYLIGHT = 0x04,
00052 UTZNM_SHORT_GENERIC = 0x08,
00057 UTZNM_SHORT_STANDARD = 0x10,
00062 UTZNM_SHORT_DAYLIGHT = 0x20,
00067 UTZNM_EXEMPLAR_LOCATION = 0x40
00068 } UTimeZoneNameType;
00069
00070 U_CDECL_END
00071
00072 U_NAMESPACE_BEGIN
00073
00074 class UVector;
00075 struct MatchInfo;
00076
00127 class U_I18N_API TimeZoneNames : public UObject {
00128 public:
00133 virtual ~TimeZoneNames();
00134
00141 virtual UBool operator==(const TimeZoneNames& other) const = 0;
00142
00150 UBool operator!=(const TimeZoneNames& other) const { return !operator==(other); }
00151
00158 virtual TimeZoneNames* clone() const = 0;
00159
00168 static TimeZoneNames* U_EXPORT2 createInstance(const Locale& locale, UErrorCode& status);
00169
00180 static TimeZoneNames* U_EXPORT2 createTZDBInstance(const Locale& locale, UErrorCode& status);
00181
00188 virtual StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const = 0;
00189
00197 virtual StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const = 0;
00198
00209 virtual UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const = 0;
00210
00227 virtual UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const = 0;
00228
00239 virtual UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const = 0;
00240
00251 virtual UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const = 0;
00252
00272 virtual UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const;
00273
00289 virtual UnicodeString& getDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UDate date, UnicodeString& name) const;
00290
00296 class U_I18N_API MatchInfoCollection : public UMemory {
00297 public:
00302 MatchInfoCollection();
00307 virtual ~MatchInfoCollection();
00308
00309 #ifndef U_HIDE_INTERNAL_API
00310
00318 void addZone(UTimeZoneNameType nameType, int32_t matchLength,
00319 const UnicodeString& tzID, UErrorCode& status);
00320
00329 void addMetaZone(UTimeZoneNameType nameType, int32_t matchLength,
00330 const UnicodeString& mzID, UErrorCode& status);
00331
00337 int32_t size() const;
00338
00347 UTimeZoneNameType getNameTypeAt(int32_t idx) const;
00348
00356 int32_t getMatchLengthAt(int32_t idx) const;
00357
00365 UBool getTimeZoneIDAt(int32_t idx, UnicodeString& tzID) const;
00366
00374 UBool getMetaZoneIDAt(int32_t idx, UnicodeString& mzID) const;
00375 #endif
00376
00377 private:
00378 UVector* fMatches;
00379
00380 UVector* matches(UErrorCode& status);
00381 };
00382
00396 virtual MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const = 0;
00397 };
00398
00399 U_NAMESPACE_END
00400
00401 #endif
00402 #endif