| Index: source/common/unicode/unorm2.h
|
| diff --git a/source/common/unicode/unorm2.h b/source/common/unicode/unorm2.h
|
| index 7152fc109466d07c50bbca5c9df7b77c1997f900..b557d6a3ec2ebf189d02ee02dca7faa65d1be6ba 100644
|
| --- a/source/common/unicode/unorm2.h
|
| +++ b/source/common/unicode/unorm2.h
|
| @@ -1,7 +1,7 @@
|
| /*
|
| *******************************************************************************
|
| *
|
| -* Copyright (C) 2009-2013, International Business Machines
|
| +* Copyright (C) 2009-2015, International Business Machines
|
| * Corporation and others. All Rights Reserved.
|
| *
|
| *******************************************************************************
|
| @@ -524,5 +524,101 @@ unorm2_hasBoundaryAfter(const UNormalizer2 *norm2, UChar32 c);
|
| U_STABLE UBool U_EXPORT2
|
| unorm2_isInert(const UNormalizer2 *norm2, UChar32 c);
|
|
|
| +/**
|
| + * Option bit for unorm_compare:
|
| + * Both input strings are assumed to fulfill FCD conditions.
|
| + * @stable ICU 2.2
|
| + */
|
| +#define UNORM_INPUT_IS_FCD 0x20000
|
| +
|
| +/**
|
| + * Option bit for unorm_compare:
|
| + * Perform case-insensitive comparison.
|
| + * @stable ICU 2.2
|
| + */
|
| +#define U_COMPARE_IGNORE_CASE 0x10000
|
| +
|
| +#ifndef U_COMPARE_CODE_POINT_ORDER
|
| +/* see also unistr.h and ustring.h */
|
| +/**
|
| + * Option bit for u_strCaseCompare, u_strcasecmp, unorm_compare, etc:
|
| + * Compare strings in code point order instead of code unit order.
|
| + * @stable ICU 2.2
|
| + */
|
| +#define U_COMPARE_CODE_POINT_ORDER 0x8000
|
| +#endif
|
| +
|
| +/**
|
| + * Compares two strings for canonical equivalence.
|
| + * Further options include case-insensitive comparison and
|
| + * code point order (as opposed to code unit order).
|
| + *
|
| + * Canonical equivalence between two strings is defined as their normalized
|
| + * forms (NFD or NFC) being identical.
|
| + * This function compares strings incrementally instead of normalizing
|
| + * (and optionally case-folding) both strings entirely,
|
| + * improving performance significantly.
|
| + *
|
| + * Bulk normalization is only necessary if the strings do not fulfill the FCD
|
| + * conditions. Only in this case, and only if the strings are relatively long,
|
| + * is memory allocated temporarily.
|
| + * For FCD strings and short non-FCD strings there is no memory allocation.
|
| + *
|
| + * Semantically, this is equivalent to
|
| + * strcmp[CodePointOrder](NFD(foldCase(NFD(s1))), NFD(foldCase(NFD(s2))))
|
| + * where code point order and foldCase are all optional.
|
| + *
|
| + * UAX 21 2.5 Caseless Matching specifies that for a canonical caseless match
|
| + * the case folding must be performed first, then the normalization.
|
| + *
|
| + * @param s1 First source string.
|
| + * @param length1 Length of first source string, or -1 if NUL-terminated.
|
| + *
|
| + * @param s2 Second source string.
|
| + * @param length2 Length of second source string, or -1 if NUL-terminated.
|
| + *
|
| + * @param options A bit set of options:
|
| + * - U_FOLD_CASE_DEFAULT or 0 is used for default options:
|
| + * Case-sensitive comparison in code unit order, and the input strings
|
| + * are quick-checked for FCD.
|
| + *
|
| + * - UNORM_INPUT_IS_FCD
|
| + * Set if the caller knows that both s1 and s2 fulfill the FCD conditions.
|
| + * If not set, the function will quickCheck for FCD
|
| + * and normalize if necessary.
|
| + *
|
| + * - U_COMPARE_CODE_POINT_ORDER
|
| + * Set to choose code point order instead of code unit order
|
| + * (see u_strCompare for details).
|
| + *
|
| + * - U_COMPARE_IGNORE_CASE
|
| + * Set to compare strings case-insensitively using case folding,
|
| + * instead of case-sensitively.
|
| + * If set, then the following case folding options are used.
|
| + *
|
| + * - Options as used with case-insensitive comparisons, currently:
|
| + *
|
| + * - U_FOLD_CASE_EXCLUDE_SPECIAL_I
|
| + * (see u_strCaseCompare for details)
|
| + *
|
| + * - regular normalization options shifted left by UNORM_COMPARE_NORM_OPTIONS_SHIFT
|
| + *
|
| + * @param pErrorCode ICU error code in/out parameter.
|
| + * Must fulfill U_SUCCESS before the function call.
|
| + * @return <0 or 0 or >0 as usual for string comparisons
|
| + *
|
| + * @see unorm_normalize
|
| + * @see UNORM_FCD
|
| + * @see u_strCompare
|
| + * @see u_strCaseCompare
|
| + *
|
| + * @stable ICU 2.2
|
| + */
|
| +U_STABLE int32_t U_EXPORT2
|
| +unorm_compare(const UChar *s1, int32_t length1,
|
| + const UChar *s2, int32_t length2,
|
| + uint32_t options,
|
| + UErrorCode *pErrorCode);
|
| +
|
| #endif /* !UCONFIG_NO_NORMALIZATION */
|
| #endif /* __UNORM2_H__ */
|
|
|