00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __TZNAMES_H
00010 #define __TZNAMES_H
00011
00016 #include "unicode/utypes.h"
00017
00018 #if !UCONFIG_NO_FORMATTING
00019
00020 #include "unicode/uloc.h"
00021 #include "unicode/unistr.h"
00022
00023 U_CDECL_BEGIN
00024
00029 typedef enum UTimeZoneNameType {
00034 UTZNM_UNKNOWN = 0x00,
00039 UTZNM_LONG_GENERIC = 0x01,
00044 UTZNM_LONG_STANDARD = 0x02,
00049 UTZNM_LONG_DAYLIGHT = 0x04,
00054 UTZNM_SHORT_GENERIC = 0x08,
00059 UTZNM_SHORT_STANDARD = 0x10,
00064 UTZNM_SHORT_DAYLIGHT = 0x20,
00069 UTZNM_EXEMPLAR_LOCATION = 0x40
00070 } UTimeZoneNameType;
00071
00072 U_CDECL_END
00073
00074 U_NAMESPACE_BEGIN
00075
00076 class UVector;
00077 struct MatchInfo;
00078
00129 class U_I18N_API TimeZoneNames : public UObject {
00130 public:
00135 virtual ~TimeZoneNames();
00136
00143 virtual UBool operator==(const TimeZoneNames& other) const = 0;
00144
00152 UBool operator!=(const TimeZoneNames& other) const { return !operator==(other); }
00153
00160 virtual TimeZoneNames* clone() const = 0;
00161
00170 static TimeZoneNames* U_EXPORT2 createInstance(const Locale& locale, UErrorCode& status);
00171
00182 static TimeZoneNames* U_EXPORT2 createTZDBInstance(const Locale& locale, UErrorCode& status);
00183
00190 virtual StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const = 0;
00191
00199 virtual StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const = 0;
00200
00211 virtual UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const = 0;
00212
00229 virtual UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const = 0;
00230
00241 virtual UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const = 0;
00242
00253 virtual UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const = 0;
00254
00274 virtual UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const;
00275
00291 virtual UnicodeString& getDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UDate date, UnicodeString& name) const;
00292
00296 virtual void loadAllDisplayNames(UErrorCode& status);
00297
00301 virtual void getDisplayNames(const UnicodeString& tzID, const UTimeZoneNameType types[], int32_t numTypes, UDate date, UnicodeString dest[], UErrorCode& status) const;
00302
00308 class U_I18N_API MatchInfoCollection : public UMemory {
00309 public:
00314 MatchInfoCollection();
00319 virtual ~MatchInfoCollection();
00320
00321 #ifndef U_HIDE_INTERNAL_API
00322
00330 void addZone(UTimeZoneNameType nameType, int32_t matchLength,
00331 const UnicodeString& tzID, UErrorCode& status);
00332
00341 void addMetaZone(UTimeZoneNameType nameType, int32_t matchLength,
00342 const UnicodeString& mzID, UErrorCode& status);
00343
00349 int32_t size() const;
00350
00359 UTimeZoneNameType getNameTypeAt(int32_t idx) const;
00360
00368 int32_t getMatchLengthAt(int32_t idx) const;
00369
00377 UBool getTimeZoneIDAt(int32_t idx, UnicodeString& tzID) const;
00378
00386 UBool getMetaZoneIDAt(int32_t idx, UnicodeString& mzID) const;
00387 #endif
00388
00389 private:
00390 UVector* fMatches;
00391
00392 UVector* matches(UErrorCode& status);
00393 };
00394
00408 virtual MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const = 0;
00409 };
00410
00411 U_NAMESPACE_END
00412
00413 #endif
00414 #endif