1/* 2******************************************************************************* 3* Copyright (C) 2011, International Business Machines Corporation and * 4* others. All Rights Reserved. * 5******************************************************************************* 6*/ 7#ifndef __TZNAMES_H 8#define __TZNAMES_H 9 10/** 11 * \file 12 * \brief C API: Time zone names class 13 */ 14#include "unicode/utypes.h" 15 16#if !UCONFIG_NO_FORMATTING 17 18#include "unicode/uloc.h" 19#include "unicode/unistr.h" 20 21U_CDECL_BEGIN 22 23typedef enum UTimeZoneNameType { 24 UTZNM_UNKNOWN = 0x00, 25 UTZNM_LONG_GENERIC = 0x01, 26 UTZNM_LONG_STANDARD = 0x02, 27 UTZNM_LONG_DAYLIGHT = 0x04, 28 UTZNM_SHORT_GENERIC = 0x08, 29 UTZNM_SHORT_STANDARD = 0x10, 30 UTZNM_SHORT_DAYLIGHT = 0x20, 31 UTZNM_SHORT_STANDARD_COMMONLY_USED = 0x40, 32 UTZNM_SHORT_DAYLIGHT_COMMONLY_USED = 0x80 33} UTimeZoneNameType; 34 35U_CDECL_END 36 37U_NAMESPACE_BEGIN 38 39class U_I18N_API TimeZoneNameMatchInfo : public UMemory { 40public: 41 virtual ~TimeZoneNameMatchInfo(); 42 43 virtual int32_t size() const = 0; 44 virtual UTimeZoneNameType getNameType(int32_t index) const = 0; 45 virtual int32_t getMatchLength(int32_t index) const = 0; 46 virtual UnicodeString& getTimeZoneID(int32_t index, UnicodeString& tzID) const = 0; 47 virtual UnicodeString& getMetaZoneID(int32_t index, UnicodeString& mzID) const = 0; 48}; 49 50inline 51TimeZoneNameMatchInfo::~TimeZoneNameMatchInfo() { 52} 53 54class U_I18N_API TimeZoneNames : public UMemory { 55public: 56 virtual ~TimeZoneNames(); 57 58 static TimeZoneNames* U_EXPORT2 createInstance(const Locale& locale, UErrorCode& status); 59 60 virtual StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const = 0; 61 virtual StringEnumeration* getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) const = 0; 62 63 virtual UnicodeString& getMetaZoneID(const UnicodeString& tzID, UDate date, UnicodeString& mzID) const = 0; 64 virtual UnicodeString& getReferenceZoneID(const UnicodeString& mzID, const char* region, UnicodeString& tzID) const = 0; 65 66 virtual UnicodeString& getMetaZoneDisplayName(const UnicodeString& mzID, UTimeZoneNameType type, UnicodeString& name) const = 0; 67 virtual UnicodeString& getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UnicodeString& name) const = 0; 68 69 virtual UnicodeString& getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const; 70 virtual UnicodeString& getDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UDate date, UnicodeString& name) const; 71 72 virtual TimeZoneNameMatchInfo* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const = 0; 73}; 74 75inline 76TimeZoneNames::~TimeZoneNames() { 77} 78 79U_NAMESPACE_END 80#endif 81#endif 82