From a20d91993ce1794a4ce234dacd249f32041b10bb Mon Sep 17 00:00:00 2001 From: Markus Scherer Date: Fri, 21 Sep 2001 18:49:51 +0000 Subject: [PATCH] ICU-1199 deprecate the C++ Unicode class X-SVN-Rev: 5872 --- icu4c/source/common/unicode/unicode.h | 156 +++++++++++++++++--------- 1 file changed, 102 insertions(+), 54 deletions(-) diff --git a/icu4c/source/common/unicode/unicode.h b/icu4c/source/common/unicode/unicode.h index b471cce32a9..b8d4a3f02ec 100644 --- a/icu4c/source/common/unicode/unicode.h +++ b/icu4c/source/common/unicode/unicode.h @@ -31,6 +31,12 @@ #include "unicode/uchar.h" /** + * This class is deprecated and will be removed. + * Use the C API, see uchar.h and utf.h. + * The Unicode class is a pure 1:1 wrapper for the functions and macros there. + * + * Old documentation: + * * The Unicode class allows you to query the properties associated with * individual Unicode character values. *

@@ -41,7 +47,9 @@ * as well as semantic information such as whether a character is a digit or * uppercase, lowercase, or uncased. *

+ * * @subclassing Do not subclass. + * @deprecated To be removed after 2002-sep-30; use the C API, see uchar.h and utf.h. */ class U_COMMON_API Unicode { @@ -50,6 +58,8 @@ public: * In C++, static const members actually take up memory and need to be accessed. * enum values are more like C #define's. * The following is a collection of constants, not an enumeration type. + * + * @deprecated See the Unicode class description. */ enum { /** The lowest Unicode code point value. Code points are non-negative. */ @@ -98,6 +108,8 @@ public: /** * Public data for enumerated Unicode general category types + * + * @deprecated See the Unicode class description. */ enum EUnicodeGeneralTypes @@ -138,6 +150,8 @@ public: /* Please keep these values in sync with UCharScript */ /** * These are the same values as uchar.h::UCharScript + * + * @deprecated See the Unicode class description. */ enum EUnicodeScript { @@ -233,6 +247,8 @@ public: /** * This specifies the language directional property of a character set. + * + * @deprecated See the Unicode class description. */ enum EDirectionProperty { LEFT_TO_RIGHT = 0, @@ -259,6 +275,8 @@ public: /** * Values returned by the getCellWidth() function. * @see Unicode#getCellWidth + * + * @deprecated See the Unicode class description. */ enum ECellWidths { @@ -276,6 +294,8 @@ public: * * @param c The code unit to be tested. * @return Boolean value. + * + * @deprecated See the Unicode class description. */ static inline UBool isSingle(UChar c); @@ -285,6 +305,8 @@ public: * * @param c The code unit to be tested. * @return Boolean value. + * + * @deprecated See the Unicode class description. */ static inline UBool isLead(UChar c); @@ -294,6 +316,8 @@ public: * * @param c The code unit to be tested. * @return Boolean value. + * + * @deprecated See the Unicode class description. */ static inline UBool isTrail(UChar c); @@ -305,6 +329,8 @@ public: * * @param c The code point to be tested. * @return Boolean value. + * + * @deprecated See the Unicode class description. */ static inline UBool isSurrogate(UChar32 c); @@ -318,6 +344,8 @@ public: * * @param c The code point to be tested. * @return Boolean value. + * + * @deprecated See the Unicode class description. */ static inline UBool isUnicodeChar(UChar32 c); @@ -330,6 +358,8 @@ public: * * @param c The code point to be tested. * @return Boolean value. + * + * @deprecated See the Unicode class description. */ static inline UBool isError(UChar32 c); @@ -340,6 +370,8 @@ public: * * @param c The code point to be tested. * @return Boolean value. + * + * @deprecated See the Unicode class description. */ static inline UBool isValid(UChar32 c); @@ -352,6 +384,8 @@ public: * * @param c The code point to be tested. * @return Boolean value. + * + * @deprecated See the Unicode class description. */ static inline UBool needMultipleUChar(UChar32 c); @@ -361,6 +395,8 @@ public: * * @param c The code point to be tested. * @return Boolean value. + * + * @deprecated See the Unicode class description. */ static inline int32_t charLength(UChar32 c); @@ -375,6 +411,8 @@ public: * @return An average size necessary for the UTF that ICU was compiled for. * (Only UTF-16 is supported right now, therefore, * this will always be size itself. This may change in the future.) + * + * @deprecated See the Unicode class description. */ static inline int32_t arraySize(int32_t size); @@ -388,7 +426,8 @@ public: * @see Unicode#isUpperCase * @see Unicode#isTitleCase * @see Unicode#toLowerCase - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isLowerCase(UChar32 ch); @@ -401,7 +440,8 @@ public: * @see Unicode#isLowerCase * @see Unicode#isTitleCase * @see Unicode#toUpperCase - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isUpperCase(UChar32 ch); @@ -414,7 +454,8 @@ public: * @see Unicode#isUpperCase * @see Unicode#isLowerCase * @see Unicode#toTitleCase - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isTitleCase(UChar32 ch); @@ -427,7 +468,8 @@ public: * @see Unicode#digit * @see Unicode#forDigit * @see Unicode#digitValue - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isDigit(UChar32 ch); @@ -444,7 +486,8 @@ public: * @see Unicode#isUpperCase * @see Unicode#isLowerCase * @see Unicode#isTitleCase - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isDefined(UChar32 ch); @@ -456,7 +499,8 @@ public: * @return true if the Unicode character is a control character; false otherwise. * * @see Unicode#isPrintable - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isControl(UChar32 ch); @@ -468,7 +512,8 @@ public: * @return true if the Unicode character is a printable character; false otherwise. * * @see Unicode#isControl - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isPrintable(UChar32 ch); @@ -481,7 +526,8 @@ public: * * @see Unicode#isLetter * @see Unicode#isDigit - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isBaseForm(UChar32 ch); @@ -498,7 +544,8 @@ public: * @see Unicode#isUpperCase * @see Unicode#isLowerCase * @see Unicode#isTitleCase - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isLetter(UChar32 ch); @@ -520,7 +567,8 @@ public: * @see isJavaIdentifierPart * @see isLetter * @see isUnicodeIdentifierStart - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isJavaIdentifierStart(UChar32 ch); @@ -550,7 +598,8 @@ public: * @see isLetter * @see isDigit * @see isUnicodeIdentifierPart - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isJavaIdentifierPart(UChar32 ch); @@ -566,7 +615,8 @@ public: * @see isJavaIdentifierStart * @see isLetter * @see isUnicodeIdentifierPart - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isUnicodeIdentifierStart(UChar32 ch); @@ -594,7 +644,8 @@ public: * @see isJavaIdentifierPart * @see isLetterOrDigit * @see isUnicodeIdentifierStart - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isUnicodeIdentifierPart(UChar32 ch); @@ -621,7 +672,8 @@ public: * FALSE otherwise. * @see isJavaIdentifierPart * @see isUnicodeIdentifierPart - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isIdentifierIgnorable(UChar32 ch); @@ -647,7 +699,8 @@ public: * @see Unicode#isUpperCase * @see Unicode#toUpperCase * @see Unicode#toTitleCase - * @draft + * + * @deprecated See the Unicode class description. */ static inline UChar32 toLowerCase(UChar32 ch); @@ -670,7 +723,8 @@ public: * @see Unicode#isLowerCase * @see Unicode#toLowerCase * @see Unicode#toTitleCase - * @draft + * + * @deprecated See the Unicode class description. */ static inline UChar32 toUpperCase(UChar32 ch); @@ -689,7 +743,8 @@ public: * @see Unicode#isTitleCase * @see Unicode#toUpperCase * @see Unicode#toLowerCase - * @draft + * + * @deprecated See the Unicode class description. */ static inline UChar32 toTitleCase(UChar32 ch); @@ -704,7 +759,8 @@ public: * @param options Either U_FOLD_CASE_DEFAULT or U_FOLD_CASE_EXCLUDE_SPECIAL_I * @return the case folding equivalent of the character, if any; * otherwise the character itself. - * @draft + * + * @deprecated See the Unicode class description. */ static inline UChar32 foldCase(UChar32 c, uint32_t options); @@ -715,7 +771,8 @@ public: * * @param ch the character to be tested * @return true if the character is a space character; false otherwise. - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isSpaceChar(UChar32 ch); @@ -745,7 +802,8 @@ public: * @return true if the character is an ICU whitespace character; * false otherwise. * @see #isSpaceChar - * @draft + * + * @deprecated See the Unicode class description. */ static inline UBool isWhitespace(UChar32 ch); @@ -781,7 +839,8 @@ public: * @see Unicode#CURRENCY_SYMBOL * @see Unicode#MODIFIER_SYMBOL * @see Unicode#OTHER_SYMBOL - * @draft + * + * @deprecated See the Unicode class description. */ static inline int8_t getType(UChar32 ch); @@ -790,7 +849,8 @@ public: * * @param c the code point of the character * @return the combining class of the character - * @draft + * + * @deprecated See the Unicode class description. */ static inline uint8_t getCombiningClass(UChar32 c); @@ -801,7 +861,8 @@ public: * For example, 0x0041 (letter A) has the LEFT_TO_RIGHT directional * property. * @see #EDirectionProperty - * @draft + * + * @deprecated See the Unicode class description. */ static inline EDirectionProperty characterDirection(UChar32 ch); @@ -813,6 +874,8 @@ public: * * @param c the character (code point, Unicode scalar value) to be tested * @return TRUE if the character has the "mirrored" property + * + * @deprecated See the Unicode class description. */ static inline UBool isMirrored(UChar32 c); @@ -830,6 +893,8 @@ public: * @return another Unicode code point that may serve as a mirror-image * substitute, or c itself if there is no such mapping or c * does not have the "mirrored" property + * + * @deprecated See the Unicode class description. */ static inline UChar32 charMirror(UChar32 c); @@ -889,7 +954,8 @@ public: * choseong filler character at the beginning of syllables that don't have an initial * consonant. The results may be slightly off with Korean text following different * conventions. - * @draft + * + * @deprecated See the Unicode class description. */ static inline uint16_t getCellWidth(UChar32 ch); @@ -918,7 +984,8 @@ public: * // use invariant-character conversion to Unicode * UnicodeString name(buffer, length, ""); * - * @draft + * + * @deprecated See the Unicode class description. */ static inline UTextOffset getCharName(uint32_t code, @@ -933,7 +1000,8 @@ public: * @see Unicode#digit * @see Unicode#forDigit * @see Unicode#isDigit - * @deprecated HSYS: use Unicode::digit instead. Remove after 2000-dec-31 + * + * @deprecated See the Unicode class description. */ static inline int32_t digitValue(UChar32 ch); @@ -972,7 +1040,8 @@ public: * @see Unicode#forDigit * @see Unicode#digitValue * @see Unicode#isDigit - * @draft + * + * @deprecated See the Unicode class description. */ static inline int8_t digit(UChar32 ch, int8_t radix); @@ -1001,14 +1070,16 @@ public: * @see Unicode#digit * @see Unicode#digitValue * @see Unicode#isDigit - * @draft + * + * @deprecated See the Unicode class description. */ static inline UChar32 forDigit(int32_t digit, int8_t radix); /** * Retrieves the Unicode Standard Version number that is used * @param info the version # information, the result will be filled in - * @draft + * + * @deprecated See the Unicode class description. */ static void getUnicodeVersion(UVersionInfo info); @@ -1255,35 +1326,12 @@ Unicode::digitValue(UChar32 ch) { inline int8_t Unicode::digit(UChar32 ch, int8_t radix) { - // ### TODO this should probably move to a C u_charDigitValueEx(ch, radix) and be called here - int8_t value; - if ((uint8_t)(radix-MIN_RADIX) <= (MAX_RADIX-MIN_RADIX)) { - value=(int8_t)u_charDigitValue(ch); - if (value < 0) { - // ch is not a decimal digit, try latin letters - if (ch >= 0x61 && ch <= 0x7A) { - value = (int8_t)(ch - 0x57); // ch - 'a' + 10 - } - else if (ch >= 0x41 && ch <= 0x5A) { - value = (int8_t)(ch - 0x37); // ch - 'A' + 10 - } - } - } else { - value = -1; // invalid radix - } - return (int8_t)((value < radix) ? value : -1); + return u_digit(ch, radix); } inline UChar32 Unicode::forDigit(int32_t digit, int8_t radix) { - // ### TODO this should probably move to a C u_forDigit(digit, radix) and be called here - if((uint8_t)(radix-MIN_RADIX)>(MAX_RADIX-MIN_RADIX) || (uint32_t)digit>=(uint32_t)radix) { - return 0; - } else if(digit<10) { - return (UChar32)(0x30+digit); - } else { - return (UChar32)((0x61-10)+digit); - } + return u_forDigit(digit, radix); } inline void