]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/unicode/tzfmt.h
ICU-66108.tar.gz
[apple/icu.git] / icuSources / i18n / unicode / tzfmt.h
index 9551f854380d289e54b3b8b98ee82b367a2e7037..6d3863b1e5add8bf1f8ee55c67125e55999ed245 100644 (file)
@@ -1,6 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
-* Copyright (C) 2011-2014, International Business Machines Corporation and
+* Copyright (C) 2011-2015, International Business Machines Corporation and
 * others. All Rights Reserved.
 *******************************************************************************
 */
@@ -14,6 +16,8 @@
 
 #include "unicode/utypes.h"
 
+#if U_SHOW_CPLUSPLUS_API
+
 #if !UCONFIG_NO_FORMATTING
 
 #include "unicode/format.h"
@@ -233,7 +237,15 @@ typedef enum UTimeZoneFormatParseOption {
      * by other styles.
      * @stable ICU 50
      */
-    UTZFMT_PARSE_OPTION_ALL_STYLES  = 0x01
+    UTZFMT_PARSE_OPTION_ALL_STYLES  = 0x01,
+     /**
+      * When parsing a time zone display name in \link UTZFMT_STYLE_SPECIFIC_SHORT \endlink,
+      * look for the IANA tz database compatible zone abbreviations in addition
+      * to the localized names coming from the icu::TimeZoneNames currently
+      * used by the icu::TimeZoneFormat.
+      * @stable ICU 54
+      */
+    UTZFMT_PARSE_OPTION_TZ_DATABASE_ABBREVIATIONS = 0x02
 } UTimeZoneFormatParseOption;
 
 U_CDECL_END
@@ -241,6 +253,7 @@ U_CDECL_END
 U_NAMESPACE_BEGIN
 
 class TimeZoneGenericNames;
+class TZDBTimeZoneNames;
 class UVector;
 
 /**
@@ -294,7 +307,7 @@ public:
      * @return A copy of the object
      * @stable ICU 50
      */
-    virtual Format* clone() const;
+    virtual TimeZoneFormat* clone() const;
 
     /**
      * Creates an instance of <code>TimeZoneFormat</code> for the given locale.
@@ -697,6 +710,9 @@ private:
 
     UBool fAbuttingOffsetHoursAndMinutes;
 
+    /* TZDBTimeZoneNames object used for parsing */
+    TZDBTimeZoneNames* fTZDBTimeZoneNames;
+
     /**
      * Returns the time zone's specific format string.
      * @param tz the time zone
@@ -727,6 +743,13 @@ private:
      */
     const TimeZoneGenericNames* getTimeZoneGenericNames(UErrorCode& status) const;
 
+    /**
+     * Lazily create a TZDBTimeZoneNames instance
+     * @param status receives the status
+     * @return the cached TZDBTimeZoneNames.
+     */
+    const TZDBTimeZoneNames* getTZDBTimeZoneNames(UErrorCode& status) const;
+
     /**
      * Private method returning the time zone's exemplar location string.
      * This method will never return empty.
@@ -921,7 +944,7 @@ private:
      * @param parsedLen the parsed length, or 0 on failure.
      * @return the parsed offset in milliseconds.
      */
-    int32_t parseDefaultOffsetFields(const UnicodeString& text, int32_t start, UChar separator,
+    int32_t parseDefaultOffsetFields(const UnicodeString& text, int32_t start, char16_t separator,
         int32_t& parsedLen) const;
 
     /**
@@ -961,7 +984,7 @@ private:
      * @param maxFields The maximum fields
      * @return The offset string
      */
-    static UnicodeString& formatOffsetWithAsciiDigits(int32_t offset, UChar sep,
+    static UnicodeString& formatOffsetWithAsciiDigits(int32_t offset, char16_t sep,
         OffsetFields minFields, OffsetFields maxFields, UnicodeString& result);
 
     /**
@@ -991,7 +1014,7 @@ private:
      * @param maxFields The maximum Fields to be parsed
      * @return Parsed offset, 0 or positive number.
      */
-    static int32_t parseAsciiOffsetFields(const UnicodeString& text, ParsePosition& pos, UChar sep,
+    static int32_t parseAsciiOffsetFields(const UnicodeString& text, ParsePosition& pos, char16_t sep,
         OffsetFields minFields, OffsetFields maxFields);
 
     /**
@@ -1073,4 +1096,7 @@ private:
 U_NAMESPACE_END
 
 #endif /* !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
 #endif