#ifndef ZONEMETA_H
#define ZONEMETA_H
#include "unicode/utypes.h"
#if !UCONFIG_NO_FORMATTING
#include "unicode/unistr.h"
#include "hash.h"
U_NAMESPACE_BEGIN
typedef struct CanonicalMapEntry {
const UChar *id; const UChar *country; } CanonicalMapEntry;
typedef struct OlsonToMetaMappingEntry {
const UChar *mzid; UDate from;
UDate to;
} OlsonToMetaMappingEntry;
typedef struct MetaToOlsonMappingEntry {
const UChar *id; UChar *territory;
} MetaToOlsonMappingEntry;
class UVector;
class U_I18N_API ZoneMeta {
public:
static UnicodeString& U_EXPORT2 getCanonicalSystemID(const UnicodeString &tzid, UnicodeString &systemID, UErrorCode& status);
static UnicodeString& U_EXPORT2 getCanonicalCountry(const UnicodeString &tzid, UnicodeString &canonicalCountry);
static UnicodeString& U_EXPORT2 getSingleCountry(const UnicodeString &tzid, UnicodeString &country);
static UnicodeString& U_EXPORT2 getMetazoneID(const UnicodeString &tzid, UDate date, UnicodeString &result);
static UnicodeString& U_EXPORT2 getZoneIdByMetazone(const UnicodeString &mzid, const UnicodeString ®ion, UnicodeString &result);
static const UVector* U_EXPORT2 getMetazoneMappings(const UnicodeString &tzid);
private:
ZoneMeta(); static const CanonicalMapEntry* U_EXPORT2 getCanonicalInfo(const UnicodeString &tzid);
static void initializeCanonicalMap(void);
static void initializeOlsonToMeta(void);
static void initializeMetaToOlson(void);
static UHashtable* createCanonicalMap(void);
static UHashtable* createOlsonToMetaMap(void);
static UHashtable* createMetaToOlsonMap(void);
};
U_NAMESPACE_END
#endif
#endif // ZONEMETA_H