tzgnames.h revision b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2
1/* 2******************************************************************************* 3* Copyright (C) 2011, International Business Machines Corporation and * 4* others. All Rights Reserved. * 5******************************************************************************* 6*/ 7#ifndef __TZGNAMES_H 8#define __TZGNAMES_H 9 10/** 11 * \file 12 * \brief C API: Time zone generic names classe 13 */ 14 15#include "unicode/utypes.h" 16 17#if !UCONFIG_NO_FORMATTING 18 19#include "unicode/locid.h" 20#include "unicode/timezone.h" 21#include "unicode/unistr.h" 22#include "tznames.h" 23#include "tznames_impl.h" 24#include "tzfmt.h" 25#include "uhash.h" 26#include "umutex.h" 27 28U_CDECL_BEGIN 29 30typedef enum UTimeZoneGenericNameType { 31 UTZGNM_UNKNOWN = 0x00, 32 UTZGNM_LOCATION = 0x01, 33 UTZGNM_LONG = 0x02, 34 UTZGNM_SHORT = 0x04 35} UTimeZoneGenericNameType; 36 37U_CDECL_END 38 39U_NAMESPACE_BEGIN 40 41class LocaleDisplayNames; 42class MessageFormat; 43class TimeZone; 44 45class TimeZoneGenericNameMatchInfo : public UMemory { 46public: 47 TimeZoneGenericNameMatchInfo(UVector* matches); 48 ~TimeZoneGenericNameMatchInfo(); 49 50 int32_t size() const; 51 UTimeZoneGenericNameType getGenericNameType(int32_t index) const; 52 int32_t getMatchLength(int32_t index) const; 53 UnicodeString& getTimeZoneID(int32_t index, UnicodeString& tzID) const; 54 55private: 56 UVector* fMatches; // vector of MatchEntry 57}; 58 59class U_I18N_API TimeZoneGenericNames : public UMemory { 60public: 61 TimeZoneGenericNames(const Locale& locale, UErrorCode& status); 62 virtual ~TimeZoneGenericNames(); 63 64 UnicodeString& getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type, 65 UDate date, UnicodeString& name) const; 66 67 UnicodeString& getGenericLocationName(const UnicodeString& tzCanonicalID, UnicodeString& name) const; 68 69 int32_t findBestMatch(const UnicodeString& text, int32_t start, uint32_t types, 70 UnicodeString& tzID, UTimeZoneTimeType& timeType, UErrorCode& status) const; 71 72private: 73 Locale fLocale; 74 UMTX fLock; 75 const TimeZoneNames* fTimeZoneNames; 76 UHashtable* fLocationNamesMap; 77 UHashtable* fPartialLocationNamesMap; 78 79 MessageFormat* fRegionFormat; 80 MessageFormat* fFallbackRegionFormat; 81 MessageFormat* fFallbackFormat; 82 83 LocaleDisplayNames* fLocaleDisplayNames; 84 ZNStringPool fStringPool; 85 86 TextTrieMap fGNamesTrie; 87 UBool fGNamesTrieFullyLoaded; 88 89 char fTargetRegion[ULOC_COUNTRY_CAPACITY]; 90 91 void initialize(const Locale& locale, UErrorCode& status); 92 void cleanup(); 93 94 void loadStrings(const UnicodeString& tzCanonicalID); 95 96 const UChar* getGenericLocationName(const UnicodeString& tzCanonicalID); 97 98 UnicodeString& formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameType type, 99 UDate date, UnicodeString& name) const; 100 101 UnicodeString& getPartialLocationName(const UnicodeString& tzCanonicalID, 102 const UnicodeString& mzID, UBool isLong, const UnicodeString& mzDisplayName, 103 UnicodeString& name) const; 104 105 const UChar* getPartialLocationName(const UnicodeString& tzCanonicalID, 106 const UnicodeString& mzID, UBool isLong, const UnicodeString& mzDisplayName); 107 108 TimeZoneGenericNameMatchInfo* findLocal(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const; 109 110 TimeZoneNameMatchInfo* findTimeZoneNames(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const; 111}; 112 113U_NAMESPACE_END 114#endif 115#endif 116