]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/unicode/uchar.h
ICU-62141.0.1.tar.gz
[apple/icu.git] / icuSources / common / unicode / uchar.h
index c4bbb495d69016eaa9fb61b672396aba1edab1b9..6d31083e66ee0de032597aa1d28c229206cbd8e7 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) 1997-2011, International Business Machines
+*   Copyright (C) 1997-2016, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 **********************************************************************
 *
@@ -24,6 +26,7 @@
 #define UCHAR_H
 
 #include "unicode/utypes.h"
+#include "unicode/stringoptions.h"
 
 U_CDECL_BEGIN
 
@@ -39,7 +42,7 @@ U_CDECL_BEGIN
  * @see u_getUnicodeVersion
  * @stable ICU 2.0
  */
-#define U_UNICODE_VERSION "6.1"
+#define U_UNICODE_VERSION "11.0"
 
 /**
  * \file
@@ -109,11 +112,11 @@ U_CDECL_BEGIN
  * Comparison:
  * - u_isUWhiteSpace=UCHAR_WHITE_SPACE: Unicode White_Space property;
  *       most of general categories "Z" (separators) + most whitespace ISO controls
- *       (including no-break spaces, but excluding IS1..IS4 and ZWSP)
+ *       (including no-break spaces, but excluding IS1..IS4)
  * - u_isWhitespace: Java isWhitespace; Z + whitespace ISO controls but excluding no-break spaces
  * - u_isJavaSpaceChar: Java isSpaceChar; just Z (including no-break spaces)
  * - u_isspace: Z + whitespace ISO controls (including no-break spaces)
- * - u_isblank: "horizontal spaces" = TAB + Zs - ZWSP
+ * - u_isblank: "horizontal spaces" = TAB + Zs
  */
 
 /**
@@ -146,8 +149,9 @@ U_CDECL_BEGIN
  *
  * The properties APIs are intended to reflect Unicode properties as defined
  * in the Unicode Character Database (UCD) and Unicode Technical Reports (UTR).
- * For details about the properties see http://www.unicode.org/ucd/ .
- * For names of Unicode properties see the UCD file PropertyAliases.txt.
+ *
+ * For details about the properties see
+ * UAX #44: Unicode Character Database (http://www.unicode.org/reports/tr44/).
  *
  * Important: If ICU is built with UCD files from Unicode versions below, e.g., 3.2,
  * then properties marked with "new in Unicode 3.2" are not or not fully available.
@@ -397,8 +401,65 @@ typedef enum UProperty {
     UCHAR_CHANGES_WHEN_CASEMAPPED=55,
     /** Binary property Changes_When_NFKC_Casefolded. @stable ICU 4.4 */
     UCHAR_CHANGES_WHEN_NFKC_CASEFOLDED=56,
-    /** One more than the last constant for binary Unicode properties. @stable ICU 2.1 */
-    UCHAR_BINARY_LIMIT=57,
+    /**
+     * Binary property Emoji.
+     * See http://www.unicode.org/reports/tr51/#Emoji_Properties
+     *
+     * @stable ICU 57
+     */
+    UCHAR_EMOJI=57,
+    /**
+     * Binary property Emoji_Presentation.
+     * See http://www.unicode.org/reports/tr51/#Emoji_Properties
+     *
+     * @stable ICU 57
+     */
+    UCHAR_EMOJI_PRESENTATION=58,
+    /**
+     * Binary property Emoji_Modifier.
+     * See http://www.unicode.org/reports/tr51/#Emoji_Properties
+     *
+     * @stable ICU 57
+     */
+    UCHAR_EMOJI_MODIFIER=59,
+    /**
+     * Binary property Emoji_Modifier_Base.
+     * See http://www.unicode.org/reports/tr51/#Emoji_Properties
+     *
+     * @stable ICU 57
+     */
+    UCHAR_EMOJI_MODIFIER_BASE=60,
+    /**
+     * Binary property Emoji_Component.
+     * See http://www.unicode.org/reports/tr51/#Emoji_Properties
+     *
+     * @stable ICU 60
+     */
+    UCHAR_EMOJI_COMPONENT=61,
+    /**
+     * Binary property Regional_Indicator.
+     * @stable ICU 60
+     */
+    UCHAR_REGIONAL_INDICATOR=62,
+    /**
+     * Binary property Prepended_Concatenation_Mark.
+     * @stable ICU 60
+     */
+    UCHAR_PREPENDED_CONCATENATION_MARK=63,
+    /**
+     * Binary property Extended_Pictographic.
+     * See http://www.unicode.org/reports/tr51/#Emoji_Properties
+     *
+     * @stable ICU 62
+     */
+    UCHAR_EXTENDED_PICTOGRAPHIC=64,
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the last constant for binary Unicode properties.
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
+    UCHAR_BINARY_LIMIT,
+#endif  // U_HIDE_DEPRECATED_API
 
     /** Enumerated property Bidi_Class.
         Same as u_charDirection, returns UCharDirection values. @stable ICU 2.2 */
@@ -480,8 +541,18 @@ typedef enum UProperty {
         (http://www.unicode.org/reports/tr29/)
         Returns UWordBreakValues values. @stable ICU 3.4 */
     UCHAR_WORD_BREAK=0x1014,
-    /** One more than the last constant for enumerated/integer Unicode properties. @stable ICU 2.2 */
-    UCHAR_INT_LIMIT=0x1015,
+    /** Enumerated property Bidi_Paired_Bracket_Type (new in Unicode 6.3).
+        Used in UAX #9: Unicode Bidirectional Algorithm
+        (http://www.unicode.org/reports/tr9/)
+        Returns UBidiPairedBracketType values. @stable ICU 52 */
+    UCHAR_BIDI_PAIRED_BRACKET_TYPE=0x1015,
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the last constant for enumerated/integer Unicode properties.
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
+    UCHAR_INT_LIMIT=0x1016,
+#endif  // U_HIDE_DEPRECATED_API
 
     /** Bitmask property General_Category_Mask.
         This is the General_Category property returned as a bit mask.
@@ -494,16 +565,26 @@ typedef enum UProperty {
     UCHAR_GENERAL_CATEGORY_MASK=0x2000,
     /** First constant for bit-mask Unicode properties. @stable ICU 2.4 */
     UCHAR_MASK_START=UCHAR_GENERAL_CATEGORY_MASK,
-    /** One more than the last constant for bit-mask Unicode properties. @stable ICU 2.4 */
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the last constant for bit-mask Unicode properties.
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     UCHAR_MASK_LIMIT=0x2001,
+#endif  // U_HIDE_DEPRECATED_API
 
     /** Double property Numeric_Value.
         Corresponds to u_getNumericValue. @stable ICU 2.4 */
     UCHAR_NUMERIC_VALUE=0x3000,
     /** First constant for double Unicode properties. @stable ICU 2.4 */
     UCHAR_DOUBLE_START=UCHAR_NUMERIC_VALUE,
-    /** One more than the last constant for double Unicode properties. @stable ICU 2.4 */
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the last constant for double Unicode properties.
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     UCHAR_DOUBLE_LIMIT=0x3001,
+#endif  // U_HIDE_DEPRECATED_API
 
     /** String property Age.
         Corresponds to u_charAge. @stable ICU 2.4 */
@@ -516,9 +597,11 @@ typedef enum UProperty {
     /** String property Case_Folding.
         Corresponds to u_strFoldCase in ustring.h. @stable ICU 2.4 */
     UCHAR_CASE_FOLDING=0x4002,
+#ifndef U_HIDE_DEPRECATED_API
     /** Deprecated string property ISO_Comment.
         Corresponds to u_getISOComment. @deprecated ICU 49 */
     UCHAR_ISO_COMMENT=0x4003,
+#endif  /* U_HIDE_DEPRECATED_API */
     /** String property Lowercase_Mapping.
         Corresponds to u_strToLower in ustring.h. @stable ICU 2.4 */
     UCHAR_LOWERCASE_MAPPING=0x4004,
@@ -540,32 +623,42 @@ typedef enum UProperty {
     /** String property Titlecase_Mapping.
         Corresponds to u_strToTitle in ustring.h. @stable ICU 2.4 */
     UCHAR_TITLECASE_MAPPING=0x400A,
+#ifndef U_HIDE_DEPRECATED_API
     /** String property Unicode_1_Name.
         This property is of little practical value.
         Beginning with ICU 49, ICU APIs return an empty string for this property.
         Corresponds to u_charName(U_UNICODE_10_CHAR_NAME). @deprecated ICU 49 */
     UCHAR_UNICODE_1_NAME=0x400B,
+#endif  /* U_HIDE_DEPRECATED_API */
     /** String property Uppercase_Mapping.
         Corresponds to u_strToUpper in ustring.h. @stable ICU 2.4 */
     UCHAR_UPPERCASE_MAPPING=0x400C,
-    /** One more than the last constant for string Unicode properties. @stable ICU 2.4 */
-    UCHAR_STRING_LIMIT=0x400D,
+    /** String property Bidi_Paired_Bracket (new in Unicode 6.3).
+        Corresponds to u_getBidiPairedBracket. @stable ICU 52 */
+    UCHAR_BIDI_PAIRED_BRACKET=0x400D,
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the last constant for string Unicode properties.
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
+    UCHAR_STRING_LIMIT=0x400E,
+#endif  // U_HIDE_DEPRECATED_API
 
-#ifndef U_HIDE_DRAFT_API
-    /** Provisional property Script_Extensions (new in Unicode 6.0).
-        As a provisional property, it may be modified or removed
-        in future versions of the Unicode Standard, and thus in ICU.
+    /** Miscellaneous property Script_Extensions (new in Unicode 6.0).
         Some characters are commonly used in multiple scripts.
         For more information, see UAX #24: http://www.unicode.org/reports/tr24/.
         Corresponds to uscript_hasScript and uscript_getScriptExtensions in uscript.h.
-        @draft ICU 4.6 */
+        @stable ICU 4.6 */
     UCHAR_SCRIPT_EXTENSIONS=0x7000,
-    /** First constant for Unicode properties with unusual value types. @draft ICU 4.6 */
+    /** First constant for Unicode properties with unusual value types. @stable ICU 4.6 */
     UCHAR_OTHER_PROPERTY_START=UCHAR_SCRIPT_EXTENSIONS,
-    /** One more than the last constant for Unicode properties with unusual value types.
-     * @draft ICU 4.6 */
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the last constant for Unicode properties with unusual value types.
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     UCHAR_OTHER_PROPERTY_LIMIT=0x7001,
-#endif  /* U_HIDE_DRAFT_API */
+#endif  // U_HIDE_DEPRECATED_API
 
     /** Represents a nonexistent or invalid property or property value. @stable ICU 2.4 */
     UCHAR_INVALID_CODE = -1
@@ -647,7 +740,13 @@ typedef enum UCharCategory
     U_INITIAL_PUNCTUATION     = 28,
     /** Pf @stable ICU 2.0 */
     U_FINAL_PUNCTUATION       = 29,
-    /** One higher than the last enum UCharCategory constant. @stable ICU 2.0 */
+    /**
+     * One higher than the last enum UCharCategory constant.
+     * This numeric value is stable (will not change), see
+     * http://www.unicode.org/policies/stability_policy.html#Property_Value
+     *
+     * @stable ICU 2.0
+     */
     U_CHAR_CATEGORY_COUNT
 } UCharCategory;
 
@@ -813,10 +912,55 @@ typedef enum UCharDirection {
     U_DIR_NON_SPACING_MARK        = 17,
     /** BN @stable ICU 2.0 */
     U_BOUNDARY_NEUTRAL            = 18,
-    /** @stable ICU 2.0 */
+    /** FSI @stable ICU 52 */
+    U_FIRST_STRONG_ISOLATE        = 19,
+    /** LRI @stable ICU 52 */
+    U_LEFT_TO_RIGHT_ISOLATE       = 20,
+    /** RLI @stable ICU 52 */
+    U_RIGHT_TO_LEFT_ISOLATE       = 21,
+    /** PDI @stable ICU 52 */
+    U_POP_DIRECTIONAL_ISOLATE     = 22,
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest UCharDirection value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_BIDI_CLASS).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     U_CHAR_DIRECTION_COUNT
+#endif  // U_HIDE_DEPRECATED_API
 } UCharDirection;
 
+/**
+ * Bidi Paired Bracket Type constants.
+ *
+ * @see UCHAR_BIDI_PAIRED_BRACKET_TYPE
+ * @stable ICU 52
+ */
+typedef enum UBidiPairedBracketType {
+    /*
+     * Note: UBidiPairedBracketType constants are parsed by preparseucd.py.
+     * It matches lines like
+     *     U_BPT_<Unicode Bidi_Paired_Bracket_Type value name>
+     */
+
+    /** Not a paired bracket. @stable ICU 52 */
+    U_BPT_NONE,
+    /** Open paired bracket. @stable ICU 52 */
+    U_BPT_OPEN,
+    /** Close paired bracket. @stable ICU 52 */
+    U_BPT_CLOSE,
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UBidiPairedBracketType value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_BIDI_PAIRED_BRACKET_TYPE).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
+    U_BPT_COUNT /* 3 */
+#endif  // U_HIDE_DEPRECATED_API
+} UBidiPairedBracketType;
+
 /**
  * Constants for Unicode blocks, see the Unicode Data file Blocks.txt
  * @stable ICU 2.0
@@ -1145,7 +1289,7 @@ enum UBlockCode {
      * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
      * @stable ICU 2.2
      */
-    UBLOCK_CYRILLIC_SUPPLEMENTARY = UBLOCK_CYRILLIC_SUPPLEMENT, 
+    UBLOCK_CYRILLIC_SUPPLEMENTARY = UBLOCK_CYRILLIC_SUPPLEMENT,
     /** @stable ICU 2.2 */
     UBLOCK_TAGALOG = 98, /*[1700]*/
     /** @stable ICU 2.2 */
@@ -1414,8 +1558,172 @@ enum UBlockCode {
     /** @stable ICU 49 */
     UBLOCK_TAKRI = 220, /*[11680]*/
 
-    /** @stable ICU 2.0 */
-    UBLOCK_COUNT = 221,
+    /* New blocks in Unicode 7.0 */
+
+    /** @stable ICU 54 */
+    UBLOCK_BASSA_VAH = 221, /*[16AD0]*/
+    /** @stable ICU 54 */
+    UBLOCK_CAUCASIAN_ALBANIAN = 222, /*[10530]*/
+    /** @stable ICU 54 */
+    UBLOCK_COPTIC_EPACT_NUMBERS = 223, /*[102E0]*/
+    /** @stable ICU 54 */
+    UBLOCK_COMBINING_DIACRITICAL_MARKS_EXTENDED = 224, /*[1AB0]*/
+    /** @stable ICU 54 */
+    UBLOCK_DUPLOYAN = 225, /*[1BC00]*/
+    /** @stable ICU 54 */
+    UBLOCK_ELBASAN = 226, /*[10500]*/
+    /** @stable ICU 54 */
+    UBLOCK_GEOMETRIC_SHAPES_EXTENDED = 227, /*[1F780]*/
+    /** @stable ICU 54 */
+    UBLOCK_GRANTHA = 228, /*[11300]*/
+    /** @stable ICU 54 */
+    UBLOCK_KHOJKI = 229, /*[11200]*/
+    /** @stable ICU 54 */
+    UBLOCK_KHUDAWADI = 230, /*[112B0]*/
+    /** @stable ICU 54 */
+    UBLOCK_LATIN_EXTENDED_E = 231, /*[AB30]*/
+    /** @stable ICU 54 */
+    UBLOCK_LINEAR_A = 232, /*[10600]*/
+    /** @stable ICU 54 */
+    UBLOCK_MAHAJANI = 233, /*[11150]*/
+    /** @stable ICU 54 */
+    UBLOCK_MANICHAEAN = 234, /*[10AC0]*/
+    /** @stable ICU 54 */
+    UBLOCK_MENDE_KIKAKUI = 235, /*[1E800]*/
+    /** @stable ICU 54 */
+    UBLOCK_MODI = 236, /*[11600]*/
+    /** @stable ICU 54 */
+    UBLOCK_MRO = 237, /*[16A40]*/
+    /** @stable ICU 54 */
+    UBLOCK_MYANMAR_EXTENDED_B = 238, /*[A9E0]*/
+    /** @stable ICU 54 */
+    UBLOCK_NABATAEAN = 239, /*[10880]*/
+    /** @stable ICU 54 */
+    UBLOCK_OLD_NORTH_ARABIAN = 240, /*[10A80]*/
+    /** @stable ICU 54 */
+    UBLOCK_OLD_PERMIC = 241, /*[10350]*/
+    /** @stable ICU 54 */
+    UBLOCK_ORNAMENTAL_DINGBATS = 242, /*[1F650]*/
+    /** @stable ICU 54 */
+    UBLOCK_PAHAWH_HMONG = 243, /*[16B00]*/
+    /** @stable ICU 54 */
+    UBLOCK_PALMYRENE = 244, /*[10860]*/
+    /** @stable ICU 54 */
+    UBLOCK_PAU_CIN_HAU = 245, /*[11AC0]*/
+    /** @stable ICU 54 */
+    UBLOCK_PSALTER_PAHLAVI = 246, /*[10B80]*/
+    /** @stable ICU 54 */
+    UBLOCK_SHORTHAND_FORMAT_CONTROLS = 247, /*[1BCA0]*/
+    /** @stable ICU 54 */
+    UBLOCK_SIDDHAM = 248, /*[11580]*/
+    /** @stable ICU 54 */
+    UBLOCK_SINHALA_ARCHAIC_NUMBERS = 249, /*[111E0]*/
+    /** @stable ICU 54 */
+    UBLOCK_SUPPLEMENTAL_ARROWS_C = 250, /*[1F800]*/
+    /** @stable ICU 54 */
+    UBLOCK_TIRHUTA = 251, /*[11480]*/
+    /** @stable ICU 54 */
+    UBLOCK_WARANG_CITI = 252, /*[118A0]*/
+
+    /* New blocks in Unicode 8.0 */
+
+    /** @stable ICU 56 */
+    UBLOCK_AHOM = 253, /*[11700]*/
+    /** @stable ICU 56 */
+    UBLOCK_ANATOLIAN_HIEROGLYPHS = 254, /*[14400]*/
+    /** @stable ICU 56 */
+    UBLOCK_CHEROKEE_SUPPLEMENT = 255, /*[AB70]*/
+    /** @stable ICU 56 */
+    UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E = 256, /*[2B820]*/
+    /** @stable ICU 56 */
+    UBLOCK_EARLY_DYNASTIC_CUNEIFORM = 257, /*[12480]*/
+    /** @stable ICU 56 */
+    UBLOCK_HATRAN = 258, /*[108E0]*/
+    /** @stable ICU 56 */
+    UBLOCK_MULTANI = 259, /*[11280]*/
+    /** @stable ICU 56 */
+    UBLOCK_OLD_HUNGARIAN = 260, /*[10C80]*/
+    /** @stable ICU 56 */
+    UBLOCK_SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS = 261, /*[1F900]*/
+    /** @stable ICU 56 */
+    UBLOCK_SUTTON_SIGNWRITING = 262, /*[1D800]*/
+
+    /* New blocks in Unicode 9.0 */
+
+    /** @stable ICU 58 */
+    UBLOCK_ADLAM = 263, /*[1E900]*/
+    /** @stable ICU 58 */
+    UBLOCK_BHAIKSUKI = 264, /*[11C00]*/
+    /** @stable ICU 58 */
+    UBLOCK_CYRILLIC_EXTENDED_C = 265, /*[1C80]*/
+    /** @stable ICU 58 */
+    UBLOCK_GLAGOLITIC_SUPPLEMENT = 266, /*[1E000]*/
+    /** @stable ICU 58 */
+    UBLOCK_IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION = 267, /*[16FE0]*/
+    /** @stable ICU 58 */
+    UBLOCK_MARCHEN = 268, /*[11C70]*/
+    /** @stable ICU 58 */
+    UBLOCK_MONGOLIAN_SUPPLEMENT = 269, /*[11660]*/
+    /** @stable ICU 58 */
+    UBLOCK_NEWA = 270, /*[11400]*/
+    /** @stable ICU 58 */
+    UBLOCK_OSAGE = 271, /*[104B0]*/
+    /** @stable ICU 58 */
+    UBLOCK_TANGUT = 272, /*[17000]*/
+    /** @stable ICU 58 */
+    UBLOCK_TANGUT_COMPONENTS = 273, /*[18800]*/
+
+    // New blocks in Unicode 10.0
+
+    /** @stable ICU 60 */
+    UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F = 274, /*[2CEB0]*/
+    /** @stable ICU 60 */
+    UBLOCK_KANA_EXTENDED_A = 275, /*[1B100]*/
+    /** @stable ICU 60 */
+    UBLOCK_MASARAM_GONDI = 276, /*[11D00]*/
+    /** @stable ICU 60 */
+    UBLOCK_NUSHU = 277, /*[1B170]*/
+    /** @stable ICU 60 */
+    UBLOCK_SOYOMBO = 278, /*[11A50]*/
+    /** @stable ICU 60 */
+    UBLOCK_SYRIAC_SUPPLEMENT = 279, /*[0860]*/
+    /** @stable ICU 60 */
+    UBLOCK_ZANABAZAR_SQUARE = 280, /*[11A00]*/
+
+    // New blocks in Unicode 11.0
+
+    /** @stable ICU 62 */
+    UBLOCK_CHESS_SYMBOLS = 281, /*[1FA00]*/
+    /** @stable ICU 62 */
+    UBLOCK_DOGRA = 282, /*[11800]*/
+    /** @stable ICU 62 */
+    UBLOCK_GEORGIAN_EXTENDED = 283, /*[1C90]*/
+    /** @stable ICU 62 */
+    UBLOCK_GUNJALA_GONDI = 284, /*[11D60]*/
+    /** @stable ICU 62 */
+    UBLOCK_HANIFI_ROHINGYA = 285, /*[10D00]*/
+    /** @stable ICU 62 */
+    UBLOCK_INDIC_SIYAQ_NUMBERS = 286, /*[1EC70]*/
+    /** @stable ICU 62 */
+    UBLOCK_MAKASAR = 287, /*[11EE0]*/
+    /** @stable ICU 62 */
+    UBLOCK_MAYAN_NUMERALS = 288, /*[1D2E0]*/
+    /** @stable ICU 62 */
+    UBLOCK_MEDEFAIDRIN = 289, /*[16E40]*/
+    /** @stable ICU 62 */
+    UBLOCK_OLD_SOGDIAN = 290, /*[10F00]*/
+    /** @stable ICU 62 */
+    UBLOCK_SOGDIAN = 291, /*[10F30]*/
+
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UBlockCode value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_BLOCK).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
+    UBLOCK_COUNT = 292,
+#endif  // U_HIDE_DEPRECATED_API
 
     /** @stable ICU 2.0 */
     UBLOCK_INVALID_CODE=-1
@@ -1444,7 +1752,15 @@ typedef enum UEastAsianWidth {
     U_EA_FULLWIDTH, /*[F]*/
     U_EA_NARROW,    /*[Na]*/
     U_EA_WIDE,      /*[W]*/
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UEastAsianWidth value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_EAST_ASIAN_WIDTH).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     U_EA_COUNT
+#endif  // U_HIDE_DEPRECATED_API
 } UEastAsianWidth;
 
 /**
@@ -1461,18 +1777,25 @@ typedef enum UEastAsianWidth {
 typedef enum UCharNameChoice {
     /** Unicode character name (Name property). @stable ICU 2.0 */
     U_UNICODE_CHAR_NAME,
+#ifndef U_HIDE_DEPRECATED_API
     /**
      * The Unicode_1_Name property value which is of little practical value.
      * Beginning with ICU 49, ICU APIs return an empty string for this name choice.
      * @deprecated ICU 49
      */
     U_UNICODE_10_CHAR_NAME,
+#endif  /* U_HIDE_DEPRECATED_API */
     /** Standard or synthetic character name. @stable ICU 2.0 */
-    U_EXTENDED_CHAR_NAME,
+    U_EXTENDED_CHAR_NAME = U_UNICODE_CHAR_NAME+2,
     /** Corrected name from NameAliases.txt. @stable ICU 4.4 */
     U_CHAR_NAME_ALIAS,
-    /** @stable ICU 2.0 */
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UCharNameChoice value.
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     U_CHAR_NAME_CHOICE_COUNT
+#endif  // U_HIDE_DEPRECATED_API
 } UCharNameChoice;
 
 /**
@@ -1491,7 +1814,13 @@ typedef enum UCharNameChoice {
 typedef enum UPropertyNameChoice {
     U_SHORT_PROPERTY_NAME,
     U_LONG_PROPERTY_NAME,
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UPropertyNameChoice value.
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     U_PROPERTY_NAME_CHOICE_COUNT
+#endif  // U_HIDE_DEPRECATED_API
 } UPropertyNameChoice;
 
 /**
@@ -1525,7 +1854,15 @@ typedef enum UDecompositionType {
     U_DT_SUPER,             /*[sup]*/
     U_DT_VERTICAL,          /*[vert]*/
     U_DT_WIDE,              /*[wide]*/
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UDecompositionType value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_DECOMPOSITION_TYPE).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     U_DT_COUNT /* 18 */
+#endif  // U_HIDE_DEPRECATED_API
 } UDecompositionType;
 
 /**
@@ -1547,7 +1884,15 @@ typedef enum UJoiningType {
     U_JT_LEFT_JOINING,      /*[L]*/
     U_JT_RIGHT_JOINING,     /*[R]*/
     U_JT_TRANSPARENT,       /*[T]*/
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UJoiningType value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_JOINING_TYPE).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     U_JT_COUNT /* 6 */
+#endif  // U_HIDE_DEPRECATED_API
 } UJoiningType;
 
 /**
@@ -1622,7 +1967,62 @@ typedef enum UJoiningGroup {
     U_JG_FARSI_YEH, /**< @stable ICU 4.4 */
     U_JG_NYA,       /**< @stable ICU 4.4 */
     U_JG_ROHINGYA_YEH,  /**< @stable ICU 49 */
+    U_JG_MANICHAEAN_ALEPH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_AYIN,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_BETH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_DALETH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_DHAMEDH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_FIVE,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_GIMEL,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_HETH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_HUNDRED,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_KAPH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_LAMEDH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_MEM,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_NUN,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_ONE,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_PE,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_QOPH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_RESH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_SADHE,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_SAMEKH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_TAW,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_TEN,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_TETH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_THAMEDH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_TWENTY,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_WAW,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_YODH,  /**< @stable ICU 54 */
+    U_JG_MANICHAEAN_ZAYIN,  /**< @stable ICU 54 */
+    U_JG_STRAIGHT_WAW,  /**< @stable ICU 54 */
+    U_JG_AFRICAN_FEH,  /**< @stable ICU 58 */
+    U_JG_AFRICAN_NOON,  /**< @stable ICU 58 */
+    U_JG_AFRICAN_QAF,  /**< @stable ICU 58 */
+
+    U_JG_MALAYALAM_BHA,  /**< @stable ICU 60 */
+    U_JG_MALAYALAM_JA,  /**< @stable ICU 60 */
+    U_JG_MALAYALAM_LLA,  /**< @stable ICU 60 */
+    U_JG_MALAYALAM_LLLA,  /**< @stable ICU 60 */
+    U_JG_MALAYALAM_NGA,  /**< @stable ICU 60 */
+    U_JG_MALAYALAM_NNA,  /**< @stable ICU 60 */
+    U_JG_MALAYALAM_NNNA,  /**< @stable ICU 60 */
+    U_JG_MALAYALAM_NYA,  /**< @stable ICU 60 */
+    U_JG_MALAYALAM_RA,  /**< @stable ICU 60 */
+    U_JG_MALAYALAM_SSA,  /**< @stable ICU 60 */
+    U_JG_MALAYALAM_TTA,  /**< @stable ICU 60 */
+
+    U_JG_HANIFI_ROHINGYA_KINNA_YA,  /**< @stable ICU 62 */
+    U_JG_HANIFI_ROHINGYA_PA,  /**< @stable ICU 62 */
+
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UJoiningGroup value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_JOINING_GROUP).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     U_JG_COUNT
+#endif  // U_HIDE_DEPRECATED_API
 } UJoiningGroup;
 
 /**
@@ -1648,9 +2048,32 @@ typedef enum UGraphemeClusterBreak {
     U_GCB_LVT = 7,              /*[LVT]*/
     U_GCB_T = 8,                /*[T]*/
     U_GCB_V = 9,                /*[V]*/
+    /** @stable ICU 4.0 */
     U_GCB_SPACING_MARK = 10,    /*[SM]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
+    /** @stable ICU 4.0 */
     U_GCB_PREPEND = 11,         /*[PP]*/
-    U_GCB_COUNT = 12
+    /** @stable ICU 50 */
+    U_GCB_REGIONAL_INDICATOR = 12,  /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
+    /** @stable ICU 58 */
+    U_GCB_E_BASE = 13,          /*[EB]*/ /* from here on: new in Unicode 9.0/ICU 58 */
+    /** @stable ICU 58 */
+    U_GCB_E_BASE_GAZ = 14,      /*[EBG]*/
+    /** @stable ICU 58 */
+    U_GCB_E_MODIFIER = 15,      /*[EM]*/
+    /** @stable ICU 58 */
+    U_GCB_GLUE_AFTER_ZWJ = 16,  /*[GAZ]*/
+    /** @stable ICU 58 */
+    U_GCB_ZWJ = 17,             /*[ZWJ]*/
+
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UGraphemeClusterBreak value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_GRAPHEME_CLUSTER_BREAK).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
+    U_GCB_COUNT = 18
+#endif  // U_HIDE_DEPRECATED_API
 } UGraphemeClusterBreak;
 
 /**
@@ -1675,12 +2098,46 @@ typedef enum UWordBreakValues {
     U_WB_MIDNUM = 5,            /*[MN]*/
     U_WB_NUMERIC = 6,           /*[NU]*/
     U_WB_EXTENDNUMLET = 7,      /*[EX]*/
+    /** @stable ICU 4.0 */
     U_WB_CR = 8,                /*[CR]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
+    /** @stable ICU 4.0 */
     U_WB_EXTEND = 9,            /*[Extend]*/
+    /** @stable ICU 4.0 */
     U_WB_LF = 10,               /*[LF]*/
+    /** @stable ICU 4.0 */
     U_WB_MIDNUMLET =11,         /*[MB]*/
+    /** @stable ICU 4.0 */
     U_WB_NEWLINE =12,           /*[NL]*/
-    U_WB_COUNT = 13
+    /** @stable ICU 50 */
+    U_WB_REGIONAL_INDICATOR = 13,   /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
+    /** @stable ICU 52 */
+    U_WB_HEBREW_LETTER = 14,    /*[HL]*/ /* from here on: new in Unicode 6.3/ICU 52 */
+    /** @stable ICU 52 */
+    U_WB_SINGLE_QUOTE = 15,     /*[SQ]*/
+    /** @stable ICU 52 */
+    U_WB_DOUBLE_QUOTE = 16,     /*[DQ]*/
+    /** @stable ICU 58 */
+    U_WB_E_BASE = 17,           /*[EB]*/ /* from here on: new in Unicode 9.0/ICU 58 */
+    /** @stable ICU 58 */
+    U_WB_E_BASE_GAZ = 18,       /*[EBG]*/
+    /** @stable ICU 58 */
+    U_WB_E_MODIFIER = 19,       /*[EM]*/
+    /** @stable ICU 58 */
+    U_WB_GLUE_AFTER_ZWJ = 20,   /*[GAZ]*/
+    /** @stable ICU 58 */
+    U_WB_ZWJ = 21,              /*[ZWJ]*/
+    /** @stable ICU 62 */
+    U_WB_WSEGSPACE = 22,        /*[WSEGSPACE]*/
+
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UWordBreakValues value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_WORD_BREAK).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
+    U_WB_COUNT = 23
+#endif  // U_HIDE_DEPRECATED_API
 } UWordBreakValues;
 
 /**
@@ -1711,7 +2168,15 @@ typedef enum USentenceBreak {
     U_SB_EXTEND = 12,           /*[EX]*/
     U_SB_LF = 13,               /*[LF]*/
     U_SB_SCONTINUE = 14,        /*[SC]*/
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal USentenceBreak value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_SENTENCE_BREAK).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     U_SB_COUNT = 15
+#endif  // U_HIDE_DEPRECATED_API
 } USentenceBreak;
 
 /**
@@ -1758,17 +2223,43 @@ typedef enum ULineBreak {
     U_LB_SPACE = 26,             /*[SP]*/
     U_LB_BREAK_SYMBOLS = 27,     /*[SY]*/
     U_LB_ZWSPACE = 28,           /*[ZW]*/
+    /** @stable ICU 2.6 */
     U_LB_NEXT_LINE = 29,         /*[NL]*/ /* from here on: new in Unicode 4/ICU 2.6 */
+    /** @stable ICU 2.6 */
     U_LB_WORD_JOINER = 30,       /*[WJ]*/
+    /** @stable ICU 3.4 */
     U_LB_H2 = 31,                /*[H2]*/ /* from here on: new in Unicode 4.1/ICU 3.4 */
+    /** @stable ICU 3.4 */
     U_LB_H3 = 32,                /*[H3]*/
+    /** @stable ICU 3.4 */
     U_LB_JL = 33,                /*[JL]*/
+    /** @stable ICU 3.4 */
     U_LB_JT = 34,                /*[JT]*/
+    /** @stable ICU 3.4 */
     U_LB_JV = 35,                /*[JV]*/
+    /** @stable ICU 4.4 */
     U_LB_CLOSE_PARENTHESIS = 36, /*[CP]*/ /* new in Unicode 5.2/ICU 4.4 */
+    /** @stable ICU 49 */
     U_LB_CONDITIONAL_JAPANESE_STARTER = 37,/*[CJ]*/ /* new in Unicode 6.1/ICU 49 */
+    /** @stable ICU 49 */
     U_LB_HEBREW_LETTER = 38,     /*[HL]*/ /* new in Unicode 6.1/ICU 49 */
-    U_LB_COUNT = 39
+    /** @stable ICU 50 */
+    U_LB_REGIONAL_INDICATOR = 39,/*[RI]*/ /* new in Unicode 6.2/ICU 50 */
+    /** @stable ICU 58 */
+    U_LB_E_BASE = 40,            /*[EB]*/ /* from here on: new in Unicode 9.0/ICU 58 */
+    /** @stable ICU 58 */
+    U_LB_E_MODIFIER = 41,        /*[EM]*/
+    /** @stable ICU 58 */
+    U_LB_ZWJ = 42,               /*[ZWJ]*/
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal ULineBreak value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_LINE_BREAK).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
+    U_LB_COUNT = 43
+#endif  // U_HIDE_DEPRECATED_API
 } ULineBreak;
 
 /**
@@ -1788,7 +2279,15 @@ typedef enum UNumericType {
     U_NT_DECIMAL,           /*[de]*/
     U_NT_DIGIT,             /*[di]*/
     U_NT_NUMERIC,           /*[nu]*/
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UNumericType value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_NUMERIC_TYPE).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     U_NT_COUNT
+#endif  // U_HIDE_DEPRECATED_API
 } UNumericType;
 
 /**
@@ -1810,7 +2309,15 @@ typedef enum UHangulSyllableType {
     U_HST_TRAILING_JAMO,    /*[T]*/
     U_HST_LV_SYLLABLE,      /*[LV]*/
     U_HST_LVT_SYLLABLE,     /*[LVT]*/
+#ifndef U_HIDE_DEPRECATED_API
+    /**
+     * One more than the highest normal UHangulSyllableType value.
+     * The highest value is available via u_getIntPropertyMaxValue(UCHAR_HANGUL_SYLLABLE_TYPE).
+     *
+     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
+     */
     U_HST_COUNT
+#endif  // U_HIDE_DEPRECATED_API
 } UHangulSyllableType;
 
 /**
@@ -2234,8 +2741,7 @@ u_isgraph(UChar32 c);
  *
  * same as
  *
- * TRUE for U+0009 (TAB) and characters with general category "Zs" (space separators)
- * except Zero Width Space (ZWSP, U+200B).
+ * TRUE for U+0009 (TAB) and characters with general category "Zs" (space separators).
  *
  * Note: There are several ICU whitespace functions; please see the uchar.h
  * file documentation for a detailed comparison.
@@ -2482,7 +2988,7 @@ u_isMirrored(UChar32 c);
  * as the mirror-image of the default glyph of the specified
  * character. This is useful for text conversion to and from
  * codepages with visual order, and for displays without glyph
- * selecetion capabilities.
+ * selection capabilities.
  *
  * @param c the code point to be mapped
  * @return another Unicode code point that may serve as a mirror-image
@@ -2496,6 +3002,25 @@ u_isMirrored(UChar32 c);
 U_STABLE UChar32 U_EXPORT2
 u_charMirror(UChar32 c);
 
+/**
+ * Maps the specified character to its paired bracket character.
+ * For Bidi_Paired_Bracket_Type!=None, this is the same as u_charMirror().
+ * Otherwise c itself is returned.
+ * See http://www.unicode.org/reports/tr9/
+ *
+ * @param c the code point to be mapped
+ * @return the paired bracket code point,
+ *         or c itself if there is no such mapping
+ *         (Bidi_Paired_Bracket_Type=None)
+ *
+ * @see UCHAR_BIDI_PAIRED_BRACKET
+ * @see UCHAR_BIDI_PAIRED_BRACKET_TYPE
+ * @see u_charMirror
+ * @stable ICU 52
+ */
+U_STABLE UChar32 U_EXPORT2
+u_getBidiPairedBracket(UChar32 c);
+
 /**
  * Returns the general category value for the code point.
  *
@@ -2656,6 +3181,7 @@ u_charName(UChar32 code, UCharNameChoice nameChoice,
            char *buffer, int32_t bufferLength,
            UErrorCode *pErrorCode);
 
+#ifndef U_HIDE_DEPRECATED_API
 /**
  * Returns an empty string.
  * Used to return the ISO 10646 comment for a character.
@@ -2674,10 +3200,11 @@ u_charName(UChar32 code, UCharNameChoice nameChoice,
  *
  * @deprecated ICU 49
  */
-U_STABLE int32_t U_EXPORT2
+U_DEPRECATED int32_t U_EXPORT2
 u_getISOComment(UChar32 c,
                 char *dest, int32_t destCapacity,
                 UErrorCode *pErrorCode);
+#endif  /* U_HIDE_DEPRECATED_API */
 
 /**
  * Find a Unicode character by its name and return its code point value.
@@ -3081,27 +3608,6 @@ u_toupper(UChar32 c);
 U_STABLE UChar32 U_EXPORT2
 u_totitle(UChar32 c);
 
-/** Option value for case folding: use default mappings defined in CaseFolding.txt. @stable ICU 2.0 */
-#define U_FOLD_CASE_DEFAULT 0
-
-/**
- * Option value for case folding:
- *
- * Use the modified set of mappings provided in CaseFolding.txt to handle dotted I
- * and dotless i appropriately for Turkic languages (tr, az).
- *
- * Before Unicode 3.2, CaseFolding.txt contains mappings marked with 'I' that
- * are to be included for default mappings and
- * excluded for the Turkic-specific mappings.
- *
- * Unicode 3.2 CaseFolding.txt instead contains mappings marked with 'T' that
- * are to be excluded for default mappings and
- * included for the Turkic-specific mappings.
- *
- * @stable ICU 2.0
- */
-#define U_FOLD_CASE_EXCLUDE_SPECIAL_I 1
-
 /**
  * The given character is mapped to its case folding equivalent according to
  * UnicodeData.txt and CaseFolding.txt;