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
21 U_CDECL_BEGIN
22
23 typedef 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
35 U_CDECL_END
36
37 U_NAMESPACE_BEGIN
38
39 class U_I18N_API TimeZoneNameMatchInfo : public UMemory {
40 public:
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
50 inline
~TimeZoneNameMatchInfo()51 TimeZoneNameMatchInfo::~TimeZoneNameMatchInfo() {
52 }
53
54 class U_I18N_API TimeZoneNames : public UMemory {
55 public:
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
75 inline
~TimeZoneNames()76 TimeZoneNames::~TimeZoneNames() {
77 }
78
79 U_NAMESPACE_END
80 #endif
81 #endif
82