// © 2017 and later: Unicode, Inc. and others. | |
// License & terms of use: http://www.unicode.org/copyright.html | |
// stringoptions.h | |
// created: 2017jun08 Markus W. Scherer | |
#ifndef __STRINGOPTIONS_H__ | |
#define __STRINGOPTIONS_H__ | |
#include "unicode/utypes.h" | |
/** | |
* \file | |
* \brief C API: Bit set option bit constants for various string and character processing functions. | |
*/ | |
/** | |
* 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 | |
/** | |
* Titlecase the string as a whole rather than each word. | |
* (Titlecase only the character at index 0, possibly adjusted.) | |
* Option bits value for titlecasing APIs that take an options bit set. | |
* | |
* It is an error to specify multiple titlecasing iterator options together, | |
* including both an options bit and an explicit BreakIterator. | |
* | |
* @see U_TITLECASE_ADJUST_TO_CASED | |
* @stable ICU 60 | |
*/ | |
#define U_TITLECASE_WHOLE_STRING 0x20 | |
/** | |
* Titlecase sentences rather than words. | |
* (Titlecase only the first character of each sentence, possibly adjusted.) | |
* Option bits value for titlecasing APIs that take an options bit set. | |
* | |
* It is an error to specify multiple titlecasing iterator options together, | |
* including both an options bit and an explicit BreakIterator. | |
* | |
* @see U_TITLECASE_ADJUST_TO_CASED | |
* @stable ICU 60 | |
*/ | |
#define U_TITLECASE_SENTENCES 0x40 | |
/** | |
* Do not lowercase non-initial parts of words when titlecasing. | |
* Option bit for titlecasing APIs that take an options bit set. | |
* | |
* By default, titlecasing will titlecase the character at each | |
* (possibly adjusted) BreakIterator index and | |
* lowercase all other characters up to the next iterator index. | |
* With this option, the other characters will not be modified. | |
* | |
* @see U_TITLECASE_ADJUST_TO_CASED | |
* @see UnicodeString::toTitle | |
* @see CaseMap::toTitle | |
* @see ucasemap_setOptions | |
* @see ucasemap_toTitle | |
* @see ucasemap_utf8ToTitle | |
* @stable ICU 3.8 | |
*/ | |
#define U_TITLECASE_NO_LOWERCASE 0x100 | |
/** | |
* Do not adjust the titlecasing BreakIterator indexes; | |
* titlecase exactly the characters at breaks from the iterator. | |
* Option bit for titlecasing APIs that take an options bit set. | |
* | |
* By default, titlecasing will take each break iterator index, | |
* adjust it to the next relevant character (see U_TITLECASE_ADJUST_TO_CASED), | |
* and titlecase that one. | |
* | |
* Other characters are lowercased. | |
* | |
* It is an error to specify multiple titlecasing adjustment options together. | |
* | |
* @see U_TITLECASE_ADJUST_TO_CASED | |
* @see U_TITLECASE_NO_LOWERCASE | |
* @see UnicodeString::toTitle | |
* @see CaseMap::toTitle | |
* @see ucasemap_setOptions | |
* @see ucasemap_toTitle | |
* @see ucasemap_utf8ToTitle | |
* @stable ICU 3.8 | |
*/ | |
#define U_TITLECASE_NO_BREAK_ADJUSTMENT 0x200 | |
/** | |
* Adjust each titlecasing BreakIterator index to the next cased character. | |
* (See the Unicode Standard, chapter 3, Default Case Conversion, R3 toTitlecase(X).) | |
* Option bit for titlecasing APIs that take an options bit set. | |
* | |
* This used to be the default index adjustment in ICU. | |
* Since ICU 60, the default index adjustment is to the next character that is | |
* a letter, number, symbol, or private use code point. | |
* (Uncased modifier letters are skipped.) | |
* The difference in behavior is small for word titlecasing, | |
* but the new adjustment is much better for whole-string and sentence titlecasing: | |
* It yields "49ers" and "«丰(abc)»" instead of "49Ers" and "«丰(Abc)»". | |
* | |
* It is an error to specify multiple titlecasing adjustment options together. | |
* | |
* @see U_TITLECASE_NO_BREAK_ADJUSTMENT | |
* @stable ICU 60 | |
*/ | |
#define U_TITLECASE_ADJUST_TO_CASED 0x400 | |
/** | |
* Option for string transformation functions to not first reset the Edits object. | |
* Used for example in some case-mapping and normalization functions. | |
* | |
* @see CaseMap | |
* @see Edits | |
* @see Normalizer2 | |
* @stable ICU 60 | |
*/ | |
#define U_EDITS_NO_RESET 0x2000 | |
/** | |
* Omit unchanged text when recording how source substrings | |
* relate to changed and unchanged result substrings. | |
* Used for example in some case-mapping and normalization functions. | |
* | |
* @see CaseMap | |
* @see Edits | |
* @see Normalizer2 | |
* @stable ICU 60 | |
*/ | |
#define U_OMIT_UNCHANGED_TEXT 0x4000 | |
/** | |
* 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 | |
/** | |
* Option bit for unorm_compare: | |
* Perform case-insensitive comparison. | |
* @stable ICU 2.2 | |
*/ | |
#define U_COMPARE_IGNORE_CASE 0x10000 | |
/** | |
* Option bit for unorm_compare: | |
* Both input strings are assumed to fulfill FCD conditions. | |
* @stable ICU 2.2 | |
*/ | |
#define UNORM_INPUT_IS_FCD 0x20000 | |
// Related definitions elsewhere. | |
// Options that are not meaningful in the same functions | |
// can share the same bits. | |
// | |
// Public: | |
// unicode/unorm.h #define UNORM_COMPARE_NORM_OPTIONS_SHIFT 20 | |
// | |
// Internal: (may change or be removed) | |
// ucase.h #define _STRCASECMP_OPTIONS_MASK 0xffff | |
// ucase.h #define _FOLD_CASE_OPTIONS_MASK 7 | |
// ucasemap_imp.h #define U_TITLECASE_ITERATOR_MASK 0xe0 | |
// ucasemap_imp.h #define U_TITLECASE_ADJUSTMENT_MASK 0x600 | |
// ustr_imp.h #define _STRNCMP_STYLE 0x1000 | |
// unormcmp.cpp #define _COMPARE_EQUIV 0x80000 | |
#endif // __STRINGOPTIONS_H__ |