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 U_SHOW_CPLUSPLUS_API
00019
00020 #if !UCONFIG_NO_FORMATTING
00021
00022 #include "unicode/uloc.h"
00023 #include "unicode/unistr.h"
00024
00025 U_CDECL_BEGIN
00026
00031 typedef enum UTimeZoneNameType {
00036 UTZNM_UNKNOWN = 0x00,
00041 UTZNM_LONG_GENERIC = 0x01,
00046 UTZNM_LONG_STANDARD = 0x02,
00051 UTZNM_LONG_DAYLIGHT = 0x04,
00056 UTZNM_SHORT_GENERIC = 0x08,
00061 UTZNM_SHORT_STANDARD = 0x10,
00066 UTZNM_SHORT_DAYLIGHT = 0x20,
00071 UTZNM_EXEMPLAR_LOCATION = 0x40
00072 } UTimeZoneNameType;
00073
00074 U_CDECL_END
00075
00076 U_NAMESPACE_BEGIN
00077
00078 class UVector;
00079 struct MatchInfo;
00080
00131 class U_I18N_API TimeZoneNames : public UObject {
00132 public:
00137 virtual ~TimeZoneNames();
00138
00145 virtual UBool operator==(const TimeZoneNames& other) const = 0;
00146
00154 UBool operator!=(const TimeZoneNames& other) const { return !operator==(other); }
00155
00162 virtual TimeZoneNames* clone() const = 0;
00163
00172 static TimeZoneNames* U_EXPORT2 createInstance(const Locale& locale, UErrorCode& status);
00173
00184 static TimeZoneNames* U_EXPORT2 createTZDBInstance(const Locale& locale, UErrorCode& status);
00185
00192 virtual StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const = 0;
00193
00201 virtual StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const = 0;
00202
00213 virtual UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const = 0;
00214
00231 virtual UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const = 0;
00232
00243 virtual UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const = 0;
00244
00255 virtual UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const = 0;
00256
00276 virtual UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const;
00277
00293 virtual UnicodeString& getDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UDate date, UnicodeString& name) const;
00294
00298 virtual void loadAllDisplayNames(UErrorCode& status);
00299
00303 virtual void getDisplayNames(const UnicodeString& tzID, const UTimeZoneNameType types[], int32_t numTypes, UDate date, UnicodeString dest[], UErrorCode& status) const;
00304
00310 class U_I18N_API MatchInfoCollection : public UMemory {
00311 public:
00316 MatchInfoCollection();
00321 virtual ~MatchInfoCollection();
00322
00323 #ifndef U_HIDE_INTERNAL_API
00324
00332 void addZone(UTimeZoneNameType nameType, int32_t matchLength,
00333 const UnicodeString& tzID, UErrorCode& status);
00334
00343 void addMetaZone(UTimeZoneNameType nameType, int32_t matchLength,
00344 const UnicodeString& mzID, UErrorCode& status);
00345
00351 int32_t size() const;
00352
00361 UTimeZoneNameType getNameTypeAt(int32_t idx) const;
00362
00370 int32_t getMatchLengthAt(int32_t idx) const;
00371
00379 UBool getTimeZoneIDAt(int32_t idx, UnicodeString& tzID) const;
00380
00388 UBool getMetaZoneIDAt(int32_t idx, UnicodeString& mzID) const;
00389 #endif
00390
00391 private:
00392 UVector* fMatches;
00393
00394 UVector* matches(UErrorCode& status);
00395 };
00396
00410 virtual MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const = 0;
00411 };
00412
00413 U_NAMESPACE_END
00414
00415 #endif
00416
00417 #endif
00418
00419 #endif