mirror of
https://github.com/openharmony/interface_sdk_c.git
synced 2026-08-26 18:56:40 -04:00
Vendored
+36
@@ -20,13 +20,31 @@ ohos_ndk_library("libicu_ndk") {
|
||||
output_name = "icu"
|
||||
system_capability = "SystemCapability.Global.I18n"
|
||||
system_capability_headers = [
|
||||
"unicode/parseerr.h",
|
||||
"unicode/platform.h",
|
||||
"unicode/ptypes.h",
|
||||
"unicode/stringoptions.h",
|
||||
"unicode/ubidi.h",
|
||||
"unicode/ubrk.h",
|
||||
"unicode/ucal.h",
|
||||
"unicode/uchar.h",
|
||||
"unicode/ucnv.h",
|
||||
"unicode/ucnv_err.h",
|
||||
"unicode/ucol.h",
|
||||
"unicode/uconfig.h",
|
||||
"unicode/udat.h",
|
||||
"unicode/udisplaycontext.h",
|
||||
"unicode/uenum.h",
|
||||
"unicode/ufieldpositer.h",
|
||||
"unicode/uloc.h",
|
||||
"unicode/umachine.h",
|
||||
"unicode/umisc.h",
|
||||
"unicode/unorm2.h",
|
||||
"unicode/unum.h",
|
||||
"unicode/unumberformatter.h",
|
||||
"unicode/uscript.h",
|
||||
"unicode/uset.h",
|
||||
"unicode/utrans.h",
|
||||
"unicode/utypes.h",
|
||||
]
|
||||
output_extension = "so"
|
||||
@@ -35,13 +53,31 @@ ohos_ndk_library("libicu_ndk") {
|
||||
ohos_ndk_headers("icu_unicode_header") {
|
||||
dest_dir = "$ndk_headers_out_dir/unicode"
|
||||
sources = [
|
||||
"ndk_headers/unicode/parseerr.h",
|
||||
"ndk_headers/unicode/platform.h",
|
||||
"ndk_headers/unicode/ptypes.h",
|
||||
"ndk_headers/unicode/stringoptions.h",
|
||||
"ndk_headers/unicode/ubidi.h",
|
||||
"ndk_headers/unicode/ubrk.h",
|
||||
"ndk_headers/unicode/ucal.h",
|
||||
"ndk_headers/unicode/uchar.h",
|
||||
"ndk_headers/unicode/ucnv.h",
|
||||
"ndk_headers/unicode/ucnv_err.h",
|
||||
"ndk_headers/unicode/ucol.h",
|
||||
"ndk_headers/unicode/uconfig.h",
|
||||
"ndk_headers/unicode/udat.h",
|
||||
"ndk_headers/unicode/udisplaycontext.h",
|
||||
"ndk_headers/unicode/uenum.h",
|
||||
"ndk_headers/unicode/ufieldpositer.h",
|
||||
"ndk_headers/unicode/uloc.h",
|
||||
"ndk_headers/unicode/umachine.h",
|
||||
"ndk_headers/unicode/umisc.h",
|
||||
"ndk_headers/unicode/unorm2.h",
|
||||
"ndk_headers/unicode/unum.h",
|
||||
"ndk_headers/unicode/unumberformatter.h",
|
||||
"ndk_headers/unicode/uscript.h",
|
||||
"ndk_headers/unicode/uset.h",
|
||||
"ndk_headers/unicode/utrans.h",
|
||||
"ndk_headers/unicode/utypes.h",
|
||||
]
|
||||
}
|
||||
|
||||
Vendored
+1524
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,92 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 1999-2005, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
* Date Name Description
|
||||
* 03/14/00 aliu Creation.
|
||||
* 06/27/00 aliu Change from C++ class to C struct
|
||||
**********************************************************************
|
||||
*/
|
||||
#ifndef PARSEERR_H
|
||||
#define PARSEERR_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
/**
|
||||
* \file
|
||||
* \brief C API: Parse Error Information
|
||||
*/
|
||||
/**
|
||||
* The capacity of the context strings in UParseError.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
enum { U_PARSE_CONTEXT_LEN = 16 };
|
||||
|
||||
/**
|
||||
* A UParseError struct is used to returned detailed information about
|
||||
* parsing errors. It is used by ICU parsing engines that parse long
|
||||
* rules, patterns, or programs, where the text being parsed is long
|
||||
* enough that more information than a UErrorCode is needed to
|
||||
* localize the error.
|
||||
*
|
||||
* <p>The line, offset, and context fields are optional; parsing
|
||||
* engines may choose not to use to use them.
|
||||
*
|
||||
* <p>The preContext and postContext strings include some part of the
|
||||
* context surrounding the error. If the source text is "let for=7"
|
||||
* and "for" is the error (e.g., because it is a reserved word), then
|
||||
* some examples of what a parser might produce are the following:
|
||||
*
|
||||
* <pre>
|
||||
* preContext postContext
|
||||
* "" "" The parser does not support context
|
||||
* "let " "=7" Pre- and post-context only
|
||||
* "let " "for=7" Pre- and post-context and error text
|
||||
* "" "for" Error text only
|
||||
* </pre>
|
||||
*
|
||||
* <p>Examples of engines which use UParseError (or may use it in the
|
||||
* future) are Transliterator, RuleBasedBreakIterator, and
|
||||
* RegexPattern.
|
||||
*
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
typedef struct UParseError {
|
||||
|
||||
/**
|
||||
* The line on which the error occurred. If the parser uses this
|
||||
* field, it sets it to the line number of the source text line on
|
||||
* which the error appears, which will be a value >= 1. If the
|
||||
* parse does not support line numbers, the value will be <= 0.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
int32_t line;
|
||||
|
||||
/**
|
||||
* The character offset to the error. If the line field is >= 1,
|
||||
* then this is the offset from the start of the line. Otherwise,
|
||||
* this is the offset from the start of the text. If the parser
|
||||
* does not support this field, it will have a value < 0.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
int32_t offset;
|
||||
|
||||
/**
|
||||
* Textual context before the error. Null-terminated. The empty
|
||||
* string if not supported by parser.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
UChar preContext[U_PARSE_CONTEXT_LEN];
|
||||
|
||||
/**
|
||||
* The error itself and/or textual context after the error.
|
||||
* Null-terminated. The empty string if not supported by parser.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
UChar postContext[U_PARSE_CONTEXT_LEN];
|
||||
|
||||
} UParseError;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,190 @@
|
||||
// © 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__
|
||||
+2191
File diff suppressed because it is too large
Load Diff
+534
@@ -0,0 +1,534 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
/*
|
||||
******************************************************************************
|
||||
* Copyright (C) 1996-2015, International Business Machines Corporation and others.
|
||||
* All Rights Reserved.
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef UBRK_H
|
||||
#define UBRK_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/uloc.h"
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
#include "unicode/localpointer.h"
|
||||
#endif // U_SHOW_CPLUSPLUS_API
|
||||
|
||||
/**
|
||||
* A text-break iterator.
|
||||
* For usage in C programs.
|
||||
*/
|
||||
#ifndef UBRK_TYPEDEF_UBREAK_ITERATOR
|
||||
# define UBRK_TYPEDEF_UBREAK_ITERATOR
|
||||
/**
|
||||
* Opaque type representing an ICU Break iterator object.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
typedef struct UBreakIterator UBreakIterator;
|
||||
#endif
|
||||
|
||||
#if !UCONFIG_NO_BREAK_ITERATION
|
||||
/**
|
||||
* \file
|
||||
* \brief C API: BreakIterator
|
||||
*
|
||||
* <h2> BreakIterator C API </h2>
|
||||
*
|
||||
* The BreakIterator C API defines methods for finding the location
|
||||
* of boundaries in text. Pointer to a UBreakIterator maintain a
|
||||
* current position and scan over text returning the index of characters
|
||||
* where boundaries occur.
|
||||
* <p>
|
||||
* Line boundary analysis determines where a text string can be broken
|
||||
* when line-wrapping. The mechanism correctly handles punctuation and
|
||||
* hyphenated words.
|
||||
* <p>
|
||||
* Note: The locale keyword "lb" can be used to modify line break
|
||||
* behavior according to the CSS level 3 line-break options, see
|
||||
* <http://dev.w3.org/csswg/css-text/#line-breaking>. For example:
|
||||
* "ja@lb=strict", "zh@lb=loose".
|
||||
* <p>
|
||||
* Sentence boundary analysis allows selection with correct
|
||||
* interpretation of periods within numbers and abbreviations, and
|
||||
* trailing punctuation marks such as quotation marks and parentheses.
|
||||
* <p>
|
||||
* Note: The locale keyword "ss" can be used to enable use of
|
||||
* segmentation suppression data (preventing breaks in English after
|
||||
* abbreviations such as "Mr." or "Est.", for example), as follows:
|
||||
* "en@ss=standard".
|
||||
* <p>
|
||||
* Word boundary analysis is used by search and replace functions, as
|
||||
* well as within text editing applications that allow the user to
|
||||
* select words with a double click. Word selection provides correct
|
||||
* interpretation of punctuation marks within and following
|
||||
* words. Characters that are not part of a word, such as symbols or
|
||||
* punctuation marks, have word-breaks on both sides.
|
||||
* <p>
|
||||
* Character boundary analysis identifies the boundaries of
|
||||
* "Extended Grapheme Clusters", which are groupings of codepoints
|
||||
* that should be treated as character-like units for many text operations.
|
||||
* Please see Unicode Standard Annex #29, Unicode Text Segmentation,
|
||||
* http://www.unicode.org/reports/tr29/ for additional information
|
||||
* on grapheme clusters and guidelines on their use.
|
||||
* <p>
|
||||
* Title boundary analysis locates all positions,
|
||||
* typically starts of words, that should be set to Title Case
|
||||
* when title casing the text.
|
||||
* <p>
|
||||
* The text boundary positions are found according to the rules
|
||||
* described in Unicode Standard Annex #29, Text Boundaries, and
|
||||
* Unicode Standard Annex #14, Line Breaking Properties. These
|
||||
* are available at http://www.unicode.org/reports/tr14/ and
|
||||
* http://www.unicode.org/reports/tr29/.
|
||||
* <p>
|
||||
* In addition to the plain C API defined in this header file, an
|
||||
* object oriented C++ API with equivalent functionality is defined in the
|
||||
* file brkiter.h.
|
||||
* <p>
|
||||
* Code snippets illustrating the use of the Break Iterator APIs
|
||||
* are available in the ICU User Guide,
|
||||
* https://unicode-org.github.io/icu/userguide/boundaryanalysis/
|
||||
* and in the sample program icu/source/samples/break/break.cpp
|
||||
*/
|
||||
|
||||
/** The possible types of text boundaries. @stable ICU 2.0 */
|
||||
typedef enum UBreakIteratorType {
|
||||
/** Character breaks @stable ICU 2.0 */
|
||||
UBRK_CHARACTER = 0,
|
||||
/** Word breaks @stable ICU 2.0 */
|
||||
UBRK_WORD = 1,
|
||||
/** Line breaks @stable ICU 2.0 */
|
||||
UBRK_LINE = 2,
|
||||
/** Sentence breaks @stable ICU 2.0 */
|
||||
UBRK_SENTENCE = 3,
|
||||
} UBreakIteratorType;
|
||||
|
||||
/** Value indicating all text boundaries have been returned.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
#define UBRK_DONE ((int32_t) -1)
|
||||
|
||||
|
||||
/**
|
||||
* Enum constants for the word break tags returned by
|
||||
* getRuleStatus(). A range of values is defined for each category of
|
||||
* word, to allow for further subdivisions of a category in future releases.
|
||||
* Applications should check for tag values falling within the range, rather
|
||||
* than for single individual values.
|
||||
*
|
||||
* The numeric values of all of these constants are stable (will not change).
|
||||
*
|
||||
* @stable ICU 2.2
|
||||
*/
|
||||
typedef enum UWordBreak {
|
||||
/** Tag value for "words" that do not fit into any of other categories.
|
||||
* Includes spaces and most punctuation. */
|
||||
UBRK_WORD_NONE = 0,
|
||||
/** Upper bound for tags for uncategorized words. */
|
||||
UBRK_WORD_NONE_LIMIT = 100,
|
||||
/** Tag value for words that appear to be numbers, lower limit. */
|
||||
UBRK_WORD_NUMBER = 100,
|
||||
/** Tag value for words that appear to be numbers, upper limit. */
|
||||
UBRK_WORD_NUMBER_LIMIT = 200,
|
||||
/** Tag value for words that contain letters, excluding
|
||||
* hiragana, katakana or ideographic characters, lower limit. */
|
||||
UBRK_WORD_LETTER = 200,
|
||||
/** Tag value for words containing letters, upper limit */
|
||||
UBRK_WORD_LETTER_LIMIT = 300,
|
||||
/** Tag value for words containing kana characters, lower limit */
|
||||
UBRK_WORD_KANA = 300,
|
||||
/** Tag value for words containing kana characters, upper limit */
|
||||
UBRK_WORD_KANA_LIMIT = 400,
|
||||
/** Tag value for words containing ideographic characters, lower limit */
|
||||
UBRK_WORD_IDEO = 400,
|
||||
/** Tag value for words containing ideographic characters, upper limit */
|
||||
UBRK_WORD_IDEO_LIMIT = 500
|
||||
} UWordBreak;
|
||||
|
||||
/**
|
||||
* Enum constants for the line break tags returned by getRuleStatus().
|
||||
* A range of values is defined for each category of
|
||||
* word, to allow for further subdivisions of a category in future releases.
|
||||
* Applications should check for tag values falling within the range, rather
|
||||
* than for single individual values.
|
||||
*
|
||||
* The numeric values of all of these constants are stable (will not change).
|
||||
*
|
||||
* @stable ICU 2.8
|
||||
*/
|
||||
typedef enum ULineBreakTag {
|
||||
/** Tag value for soft line breaks, positions at which a line break
|
||||
* is acceptable but not required */
|
||||
UBRK_LINE_SOFT = 0,
|
||||
/** Upper bound for soft line breaks. */
|
||||
UBRK_LINE_SOFT_LIMIT = 100,
|
||||
/** Tag value for a hard, or mandatory line break */
|
||||
UBRK_LINE_HARD = 100,
|
||||
/** Upper bound for hard line breaks. */
|
||||
UBRK_LINE_HARD_LIMIT = 200
|
||||
} ULineBreakTag;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Enum constants for the sentence break tags returned by getRuleStatus().
|
||||
* A range of values is defined for each category of
|
||||
* sentence, to allow for further subdivisions of a category in future releases.
|
||||
* Applications should check for tag values falling within the range, rather
|
||||
* than for single individual values.
|
||||
*
|
||||
* The numeric values of all of these constants are stable (will not change).
|
||||
*
|
||||
* @stable ICU 2.8
|
||||
*/
|
||||
typedef enum USentenceBreakTag {
|
||||
/** Tag value for for sentences ending with a sentence terminator
|
||||
* ('.', '?', '!', etc.) character, possibly followed by a
|
||||
* hard separator (CR, LF, PS, etc.)
|
||||
*/
|
||||
UBRK_SENTENCE_TERM = 0,
|
||||
/** Upper bound for tags for sentences ended by sentence terminators. */
|
||||
UBRK_SENTENCE_TERM_LIMIT = 100,
|
||||
/** Tag value for for sentences that do not contain an ending
|
||||
* sentence terminator ('.', '?', '!', etc.) character, but
|
||||
* are ended only by a hard separator (CR, LF, PS, etc.) or end of input.
|
||||
*/
|
||||
UBRK_SENTENCE_SEP = 100,
|
||||
/** Upper bound for tags for sentences ended by a separator. */
|
||||
UBRK_SENTENCE_SEP_LIMIT = 200
|
||||
/** Tag value for a hard, or mandatory line break */
|
||||
} USentenceBreakTag;
|
||||
|
||||
|
||||
/**
|
||||
* Open a new UBreakIterator for locating text boundaries for a specified locale.
|
||||
* A UBreakIterator may be used for detecting character, line, word,
|
||||
* and sentence breaks in text.
|
||||
* @param type The type of UBreakIterator to open: one of UBRK_CHARACTER, UBRK_WORD,
|
||||
* UBRK_LINE, UBRK_SENTENCE
|
||||
* @param locale The locale specifying the text-breaking conventions. Note that
|
||||
* locale keys such as "lb" and "ss" may be used to modify text break behavior,
|
||||
* see general discussion of BreakIterator C API.
|
||||
* @param text The text to be iterated over. May be null, in which case ubrk_setText() is
|
||||
* used to specify the text to be iterated.
|
||||
* @param textLength The number of characters in text, or -1 if null-terminated.
|
||||
* @param status A UErrorCode to receive any errors.
|
||||
* @return A UBreakIterator for the specified locale.
|
||||
* @see ubrk_openRules
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI UBreakIterator* U_EXPORT2
|
||||
ubrk_open(UBreakIteratorType type,
|
||||
const char *locale,
|
||||
const UChar *text,
|
||||
int32_t textLength,
|
||||
UErrorCode *status);
|
||||
|
||||
/**
|
||||
* Open a new UBreakIterator for locating text boundaries using specified breaking rules.
|
||||
* The rule syntax is ... (TBD)
|
||||
* @param rules A set of rules specifying the text breaking conventions.
|
||||
* @param rulesLength The number of characters in rules, or -1 if null-terminated.
|
||||
* @param text The text to be iterated over. May be null, in which case ubrk_setText() is
|
||||
* used to specify the text to be iterated.
|
||||
* @param textLength The number of characters in text, or -1 if null-terminated.
|
||||
* @param parseErr Receives position and context information for any syntax errors
|
||||
* detected while parsing the rules.
|
||||
* @param status A UErrorCode to receive any errors.
|
||||
* @return A UBreakIterator for the specified rules.
|
||||
* @see ubrk_open
|
||||
* @stable ICU 2.2
|
||||
*/
|
||||
U_CAPI UBreakIterator* U_EXPORT2
|
||||
ubrk_openRules(const UChar *rules,
|
||||
int32_t rulesLength,
|
||||
const UChar *text,
|
||||
int32_t textLength,
|
||||
UParseError *parseErr,
|
||||
UErrorCode *status);
|
||||
|
||||
/**
|
||||
* Open a new UBreakIterator for locating text boundaries using precompiled binary rules.
|
||||
* Opening a UBreakIterator this way is substantially faster than using ubrk_openRules.
|
||||
* Binary rules may be obtained using ubrk_getBinaryRules. The compiled rules are not
|
||||
* compatible across different major versions of ICU, nor across platforms of different
|
||||
* endianness or different base character set family (ASCII vs EBCDIC).
|
||||
* @param binaryRules A set of compiled binary rules specifying the text breaking
|
||||
* conventions. Ownership of the storage containing the compiled
|
||||
* rules remains with the caller of this function. The compiled
|
||||
* rules must not be modified or deleted during the life of the
|
||||
* break iterator.
|
||||
* @param rulesLength The length of binaryRules in bytes; must be >= 0.
|
||||
* @param text The text to be iterated over. May be null, in which case
|
||||
* ubrk_setText() is used to specify the text to be iterated.
|
||||
* @param textLength The number of characters in text, or -1 if null-terminated.
|
||||
* @param status Pointer to UErrorCode to receive any errors.
|
||||
* @return UBreakIterator for the specified rules.
|
||||
* @see ubrk_getBinaryRules
|
||||
* @stable ICU 59
|
||||
*/
|
||||
U_CAPI UBreakIterator* U_EXPORT2
|
||||
ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
|
||||
const UChar * text, int32_t textLength,
|
||||
UErrorCode * status);
|
||||
|
||||
#ifndef U_HIDE_DEPRECATED_API
|
||||
|
||||
#endif /* U_HIDE_DEPRECATED_API */
|
||||
|
||||
/**
|
||||
* Thread safe cloning operation.
|
||||
* @param bi iterator to be cloned
|
||||
* @param status to indicate whether the operation went on smoothly or there were errors
|
||||
* @return pointer to the new clone
|
||||
* @stable ICU 69
|
||||
*/
|
||||
U_CAPI UBreakIterator * U_EXPORT2
|
||||
ubrk_clone(const UBreakIterator *bi,
|
||||
UErrorCode *status);
|
||||
|
||||
/**
|
||||
* Close a UBreakIterator.
|
||||
* Once closed, a UBreakIterator may no longer be used.
|
||||
* @param bi The break iterator to close.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ubrk_close(UBreakIterator *bi);
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* \class LocalUBreakIteratorPointer
|
||||
* "Smart pointer" class, closes a UBreakIterator via ubrk_close().
|
||||
* For most methods see the LocalPointerBase base class.
|
||||
*
|
||||
* @see LocalPointerBase
|
||||
* @see LocalPointer
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_DEFINE_LOCAL_OPEN_POINTER(LocalUBreakIteratorPointer, UBreakIterator, ubrk_close);
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Sets an existing iterator to point to a new piece of text.
|
||||
* The break iterator retains a pointer to the supplied text.
|
||||
* The caller must not modify or delete the text while the BreakIterator
|
||||
* retains the reference.
|
||||
*
|
||||
* @param bi The iterator to use
|
||||
* @param text The text to be set
|
||||
* @param textLength The length of the text
|
||||
* @param status The error code
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ubrk_setText(UBreakIterator* bi,
|
||||
const UChar* text,
|
||||
int32_t textLength,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Determine the most recently-returned text boundary.
|
||||
*
|
||||
* @param bi The break iterator to use.
|
||||
* @return The character index most recently returned by \ref ubrk_next, \ref ubrk_previous,
|
||||
* \ref ubrk_first, or \ref ubrk_last.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_current(const UBreakIterator *bi);
|
||||
|
||||
/**
|
||||
* Advance the iterator to the boundary following the current boundary.
|
||||
*
|
||||
* @param bi The break iterator to use.
|
||||
* @return The character index of the next text boundary, or UBRK_DONE
|
||||
* if all text boundaries have been returned.
|
||||
* @see ubrk_previous
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_next(UBreakIterator *bi);
|
||||
|
||||
/**
|
||||
* Set the iterator position to the boundary preceding the current boundary.
|
||||
*
|
||||
* @param bi The break iterator to use.
|
||||
* @return The character index of the preceding text boundary, or UBRK_DONE
|
||||
* if all text boundaries have been returned.
|
||||
* @see ubrk_next
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_previous(UBreakIterator *bi);
|
||||
|
||||
/**
|
||||
* Set the iterator position to zero, the start of the text being scanned.
|
||||
* @param bi The break iterator to use.
|
||||
* @return The new iterator position (zero).
|
||||
* @see ubrk_last
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_first(UBreakIterator *bi);
|
||||
|
||||
/**
|
||||
* Set the iterator position to the index immediately <EM>beyond</EM> the last character in the text being scanned.
|
||||
* This is not the same as the last character.
|
||||
* @param bi The break iterator to use.
|
||||
* @return The character offset immediately <EM>beyond</EM> the last character in the
|
||||
* text being scanned.
|
||||
* @see ubrk_first
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_last(UBreakIterator *bi);
|
||||
|
||||
/**
|
||||
* Set the iterator position to the first boundary preceding the specified offset.
|
||||
* The new position is always smaller than offset, or UBRK_DONE.
|
||||
* @param bi The break iterator to use.
|
||||
* @param offset The offset to begin scanning.
|
||||
* @return The text boundary preceding offset, or UBRK_DONE.
|
||||
* @see ubrk_following
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_preceding(UBreakIterator *bi,
|
||||
int32_t offset);
|
||||
|
||||
/**
|
||||
* Advance the iterator to the first boundary following the specified offset.
|
||||
* The value returned is always greater than offset, or UBRK_DONE.
|
||||
* @param bi The break iterator to use.
|
||||
* @param offset The offset to begin scanning.
|
||||
* @return The text boundary following offset, or UBRK_DONE.
|
||||
* @see ubrk_preceding
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_following(UBreakIterator *bi,
|
||||
int32_t offset);
|
||||
|
||||
/**
|
||||
* Get a locale for which text breaking information is available.
|
||||
* A UBreakIterator in a locale returned by this function will perform the correct
|
||||
* text breaking for the locale.
|
||||
* @param index The index of the desired locale.
|
||||
* @return A locale for which number text breaking information is available, or 0 if none.
|
||||
* @see ubrk_countAvailable
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI const char* U_EXPORT2
|
||||
ubrk_getAvailable(int32_t index);
|
||||
|
||||
/**
|
||||
* Determine how many locales have text breaking information available.
|
||||
* This function is most useful as determining the loop ending condition for
|
||||
* calls to \ref ubrk_getAvailable.
|
||||
* @return The number of locales for which text breaking information is available.
|
||||
* @see ubrk_getAvailable
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_countAvailable(void);
|
||||
|
||||
|
||||
/**
|
||||
* Returns true if the specified position is a boundary position. As a side
|
||||
* effect, leaves the iterator pointing to the first boundary position at
|
||||
* or after "offset".
|
||||
* @param bi The break iterator to use.
|
||||
* @param offset the offset to check.
|
||||
* @return True if "offset" is a boundary position.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
ubrk_isBoundary(UBreakIterator *bi, int32_t offset);
|
||||
|
||||
/**
|
||||
* Return the status from the break rule that determined the most recently
|
||||
* returned break position. The values appear in the rule source
|
||||
* within brackets, {123}, for example. For rules that do not specify a
|
||||
* status, a default value of 0 is returned.
|
||||
* <p>
|
||||
* For word break iterators, the possible values are defined in enum UWordBreak.
|
||||
* @stable ICU 2.2
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_getRuleStatus(UBreakIterator *bi);
|
||||
|
||||
/**
|
||||
* Get the statuses from the break rules that determined the most recently
|
||||
* returned break position. The values appear in the rule source
|
||||
* within brackets, {123}, for example. The default status value for rules
|
||||
* that do not explicitly provide one is zero.
|
||||
* <p>
|
||||
* For word break iterators, the possible values are defined in enum UWordBreak.
|
||||
* @param bi The break iterator to use
|
||||
* @param fillInVec an array to be filled in with the status values.
|
||||
* @param capacity the length of the supplied vector. A length of zero causes
|
||||
* the function to return the number of status values, in the
|
||||
* normal way, without attempting to store any values.
|
||||
* @param status receives error codes.
|
||||
* @return The number of rule status values from rules that determined
|
||||
* the most recent boundary returned by the break iterator.
|
||||
* @stable ICU 3.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status);
|
||||
|
||||
/**
|
||||
* Return the locale of the break iterator. You can choose between the valid and
|
||||
* the actual locale.
|
||||
* @param bi break iterator
|
||||
* @param type locale type (valid or actual)
|
||||
* @param status error code
|
||||
* @return locale string
|
||||
* @stable ICU 2.8
|
||||
*/
|
||||
U_CAPI const char* U_EXPORT2
|
||||
ubrk_getLocaleByType(const UBreakIterator *bi, ULocDataLocaleType type, UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Get a compiled binary version of the rules specifying the behavior of a UBreakIterator.
|
||||
* The binary rules may be used with ubrk_openBinaryRules to open a new UBreakIterator
|
||||
* more quickly than using ubrk_openRules. The compiled rules are not compatible across
|
||||
* different major versions of ICU, nor across platforms of different endianness or
|
||||
* different base character set family (ASCII vs EBCDIC). Supports preflighting (with
|
||||
* binaryRules=NULL and rulesCapacity=0) to get the rules length without copying them to
|
||||
* the binaryRules buffer. However, whether preflighting or not, if the actual length
|
||||
* is greater than INT32_MAX, then the function returns 0 and sets *status to
|
||||
* U_INDEX_OUTOFBOUNDS_ERROR.
|
||||
|
||||
* @param bi The break iterator to use.
|
||||
* @param binaryRules Buffer to receive the compiled binary rules; set to NULL for
|
||||
* preflighting.
|
||||
* @param rulesCapacity Capacity (in bytes) of the binaryRules buffer; set to 0 for
|
||||
* preflighting. Must be >= 0.
|
||||
* @param status Pointer to UErrorCode to receive any errors, such as
|
||||
* U_BUFFER_OVERFLOW_ERROR, U_INDEX_OUTOFBOUNDS_ERROR, or
|
||||
* U_ILLEGAL_ARGUMENT_ERROR.
|
||||
* @return The actual byte length of the binary rules, if <= INT32_MAX;
|
||||
* otherwise 0. If not preflighting and this is larger than
|
||||
* rulesCapacity, *status will be set to an error.
|
||||
* @see ubrk_openBinaryRules
|
||||
* @stable ICU 59
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ubrk_getBinaryRules(UBreakIterator *bi,
|
||||
uint8_t * binaryRules, int32_t rulesCapacity,
|
||||
UErrorCode * status);
|
||||
|
||||
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
|
||||
|
||||
#endif
|
||||
+1682
File diff suppressed because it is too large
Load Diff
+3900
File diff suppressed because it is too large
Load Diff
+1138
File diff suppressed because it is too large
Load Diff
+1588
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,173 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
/*
|
||||
*****************************************************************************************
|
||||
* Copyright (C) 2014-2016, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*****************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef UDISPLAYCONTEXT_H
|
||||
#define UDISPLAYCONTEXT_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
/**
|
||||
* \file
|
||||
* \brief C API: Display context types (enum values)
|
||||
*/
|
||||
|
||||
/**
|
||||
* Display context types, for getting values of a particular setting.
|
||||
* Note, the specific numeric values are internal and may change.
|
||||
* @stable ICU 51
|
||||
*/
|
||||
enum UDisplayContextType {
|
||||
/**
|
||||
* Type to retrieve the dialect handling setting, e.g.
|
||||
* UDISPCTX_STANDARD_NAMES or UDISPCTX_DIALECT_NAMES.
|
||||
* @stable ICU 51
|
||||
*/
|
||||
UDISPCTX_TYPE_DIALECT_HANDLING = 0,
|
||||
/**
|
||||
* Type to retrieve the capitalization context setting, e.g.
|
||||
* UDISPCTX_CAPITALIZATION_NONE, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,
|
||||
* UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, etc.
|
||||
* @stable ICU 51
|
||||
*/
|
||||
UDISPCTX_TYPE_CAPITALIZATION = 1,
|
||||
/**
|
||||
* Type to retrieve the display length setting, e.g.
|
||||
* UDISPCTX_LENGTH_FULL, UDISPCTX_LENGTH_SHORT.
|
||||
* @stable ICU 54
|
||||
*/
|
||||
UDISPCTX_TYPE_DISPLAY_LENGTH = 2,
|
||||
/**
|
||||
* Type to retrieve the substitute handling setting, e.g.
|
||||
* UDISPCTX_SUBSTITUTE, UDISPCTX_NO_SUBSTITUTE.
|
||||
* @stable ICU 58
|
||||
*/
|
||||
UDISPCTX_TYPE_SUBSTITUTE_HANDLING = 3
|
||||
};
|
||||
/**
|
||||
* @stable ICU 51
|
||||
*/
|
||||
typedef enum UDisplayContextType UDisplayContextType;
|
||||
|
||||
/**
|
||||
* Display context settings.
|
||||
* Note, the specific numeric values are internal and may change.
|
||||
* @stable ICU 51
|
||||
*/
|
||||
enum UDisplayContext {
|
||||
/**
|
||||
* ================================
|
||||
* DIALECT_HANDLING can be set to one of UDISPCTX_STANDARD_NAMES or
|
||||
* UDISPCTX_DIALECT_NAMES. Use UDisplayContextType UDISPCTX_TYPE_DIALECT_HANDLING
|
||||
* to get the value.
|
||||
*/
|
||||
/**
|
||||
* A possible setting for DIALECT_HANDLING:
|
||||
* use standard names when generating a locale name,
|
||||
* e.g. en_GB displays as 'English (United Kingdom)'.
|
||||
* @stable ICU 51
|
||||
*/
|
||||
UDISPCTX_STANDARD_NAMES = (UDISPCTX_TYPE_DIALECT_HANDLING<<8) + 0,
|
||||
/**
|
||||
* A possible setting for DIALECT_HANDLING:
|
||||
* use dialect names, when generating a locale name,
|
||||
* e.g. en_GB displays as 'British English'.
|
||||
* @stable ICU 51
|
||||
*/
|
||||
UDISPCTX_DIALECT_NAMES = (UDISPCTX_TYPE_DIALECT_HANDLING<<8) + 1,
|
||||
/**
|
||||
* ================================
|
||||
* CAPITALIZATION can be set to one of UDISPCTX_CAPITALIZATION_NONE,
|
||||
* UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,
|
||||
* UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE,
|
||||
* UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, or
|
||||
* UDISPCTX_CAPITALIZATION_FOR_STANDALONE.
|
||||
* Use UDisplayContextType UDISPCTX_TYPE_CAPITALIZATION to get the value.
|
||||
*/
|
||||
/**
|
||||
* The capitalization context to be used is unknown (this is the default value).
|
||||
* @stable ICU 51
|
||||
*/
|
||||
UDISPCTX_CAPITALIZATION_NONE = (UDISPCTX_TYPE_CAPITALIZATION<<8) + 0,
|
||||
/**
|
||||
* The capitalization context if a date, date symbol or display name is to be
|
||||
* formatted with capitalization appropriate for the middle of a sentence.
|
||||
* @stable ICU 51
|
||||
*/
|
||||
UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE = (UDISPCTX_TYPE_CAPITALIZATION<<8) + 1,
|
||||
/**
|
||||
* The capitalization context if a date, date symbol or display name is to be
|
||||
* formatted with capitalization appropriate for the beginning of a sentence.
|
||||
* @stable ICU 51
|
||||
*/
|
||||
UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE = (UDISPCTX_TYPE_CAPITALIZATION<<8) + 2,
|
||||
/**
|
||||
* The capitalization context if a date, date symbol or display name is to be
|
||||
* formatted with capitalization appropriate for a user-interface list or menu item.
|
||||
* @stable ICU 51
|
||||
*/
|
||||
UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU = (UDISPCTX_TYPE_CAPITALIZATION<<8) + 3,
|
||||
/**
|
||||
* The capitalization context if a date, date symbol or display name is to be
|
||||
* formatted with capitalization appropriate for stand-alone usage such as an
|
||||
* isolated name on a calendar page.
|
||||
* @stable ICU 51
|
||||
*/
|
||||
UDISPCTX_CAPITALIZATION_FOR_STANDALONE = (UDISPCTX_TYPE_CAPITALIZATION<<8) + 4,
|
||||
/**
|
||||
* ================================
|
||||
* DISPLAY_LENGTH can be set to one of UDISPCTX_LENGTH_FULL or
|
||||
* UDISPCTX_LENGTH_SHORT. Use UDisplayContextType UDISPCTX_TYPE_DISPLAY_LENGTH
|
||||
* to get the value.
|
||||
*/
|
||||
/**
|
||||
* A possible setting for DISPLAY_LENGTH:
|
||||
* use full names when generating a locale name,
|
||||
* e.g. "United States" for US.
|
||||
* @stable ICU 54
|
||||
*/
|
||||
UDISPCTX_LENGTH_FULL = (UDISPCTX_TYPE_DISPLAY_LENGTH<<8) + 0,
|
||||
/**
|
||||
* A possible setting for DISPLAY_LENGTH:
|
||||
* use short names when generating a locale name,
|
||||
* e.g. "U.S." for US.
|
||||
* @stable ICU 54
|
||||
*/
|
||||
UDISPCTX_LENGTH_SHORT = (UDISPCTX_TYPE_DISPLAY_LENGTH<<8) + 1,
|
||||
/**
|
||||
* ================================
|
||||
* SUBSTITUTE_HANDLING can be set to one of UDISPCTX_SUBSTITUTE or
|
||||
* UDISPCTX_NO_SUBSTITUTE. Use UDisplayContextType UDISPCTX_TYPE_SUBSTITUTE_HANDLING
|
||||
* to get the value.
|
||||
*/
|
||||
/**
|
||||
* A possible setting for SUBSTITUTE_HANDLING:
|
||||
* Returns a fallback value (e.g., the input code) when no data is available.
|
||||
* This is the default value.
|
||||
* @stable ICU 58
|
||||
*/
|
||||
UDISPCTX_SUBSTITUTE = (UDISPCTX_TYPE_SUBSTITUTE_HANDLING<<8) + 0,
|
||||
/**
|
||||
* A possible setting for SUBSTITUTE_HANDLING:
|
||||
* Returns a null value with error code set to U_ILLEGAL_ARGUMENT_ERROR when no
|
||||
* data is available.
|
||||
* @stable ICU 58
|
||||
*/
|
||||
UDISPCTX_NO_SUBSTITUTE = (UDISPCTX_TYPE_SUBSTITUTE_HANDLING<<8) + 1
|
||||
|
||||
};
|
||||
/**
|
||||
* @stable ICU 51
|
||||
*/
|
||||
typedef enum UDisplayContext UDisplayContext;
|
||||
|
||||
#endif /* #if !UCONFIG_NO_FORMATTING */
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,123 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
/*
|
||||
*****************************************************************************************
|
||||
* Copyright (C) 2015-2016, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*****************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef UFIELDPOSITER_H
|
||||
#define UFIELDPOSITER_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
#include "unicode/localpointer.h"
|
||||
#endif // U_SHOW_CPLUSPLUS_API
|
||||
|
||||
/**
|
||||
* \file
|
||||
* \brief C API: UFieldPositionIterator for use with format APIs.
|
||||
*
|
||||
* Usage:
|
||||
* ufieldpositer_open creates an empty (unset) UFieldPositionIterator.
|
||||
* This can be passed to format functions such as {@link #udat_formatForFields},
|
||||
* which will set it to apply to the fields in a particular formatted string.
|
||||
* ufieldpositer_next can then be used to iterate over those fields,
|
||||
* providing for each field its type (using values that are specific to the
|
||||
* particular format type, such as date or number formats), as well as the
|
||||
* start and end positions of the field in the formatted string.
|
||||
* A given UFieldPositionIterator can be re-used for different format calls;
|
||||
* each such call resets it to apply to that format string.
|
||||
* ufieldpositer_close should be called to dispose of the UFieldPositionIterator
|
||||
* when it is no longer needed.
|
||||
*
|
||||
* @see FieldPositionIterator
|
||||
*/
|
||||
|
||||
/**
|
||||
* Opaque UFieldPositionIterator object for use in C.
|
||||
* @stable ICU 55
|
||||
*/
|
||||
struct UFieldPositionIterator;
|
||||
typedef struct UFieldPositionIterator UFieldPositionIterator; /**< C typedef for struct UFieldPositionIterator. @stable ICU 55 */
|
||||
|
||||
/**
|
||||
* Open a new, unset UFieldPositionIterator object.
|
||||
* @param status
|
||||
* A pointer to a UErrorCode to receive any errors.
|
||||
* @return
|
||||
* A pointer to an empty (unset) UFieldPositionIterator object,
|
||||
* or NULL if an error occurred.
|
||||
* @stable ICU 55
|
||||
*/
|
||||
U_CAPI UFieldPositionIterator* U_EXPORT2
|
||||
ufieldpositer_open(UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Close a UFieldPositionIterator object. Once closed it may no longer be used.
|
||||
* @param fpositer
|
||||
* A pointer to the UFieldPositionIterator object to close.
|
||||
* @stable ICU 55
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ufieldpositer_close(UFieldPositionIterator *fpositer);
|
||||
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* \class LocalUFieldPositionIteratorPointer
|
||||
* "Smart pointer" class, closes a UFieldPositionIterator via ufieldpositer_close().
|
||||
* For most methods see the LocalPointerBase base class.
|
||||
*
|
||||
* @see LocalPointerBase
|
||||
* @see LocalPointer
|
||||
* @stable ICU 55
|
||||
*/
|
||||
U_DEFINE_LOCAL_OPEN_POINTER(LocalUFieldPositionIteratorPointer, UFieldPositionIterator, ufieldpositer_close);
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Get information for the next field in the formatted string to which this
|
||||
* UFieldPositionIterator currently applies, or return a negative value if there
|
||||
* are no more fields.
|
||||
* @param fpositer
|
||||
* A pointer to the UFieldPositionIterator object containing iteration
|
||||
* state for the format fields.
|
||||
* @param beginIndex
|
||||
* A pointer to an int32_t to receive information about the start offset
|
||||
* of the field in the formatted string (undefined if the function
|
||||
* returns a negative value). May be NULL if this information is not needed.
|
||||
* @param endIndex
|
||||
* A pointer to an int32_t to receive information about the end offset
|
||||
* of the field in the formatted string (undefined if the function
|
||||
* returns a negative value). May be NULL if this information is not needed.
|
||||
* @return
|
||||
* The field type (non-negative value), or a negative value if there are
|
||||
* no more fields for which to provide information. If negative, then any
|
||||
* values pointed to by beginIndex and endIndex are undefined.
|
||||
*
|
||||
* The values for field type depend on what type of formatter the
|
||||
* UFieldPositionIterator has been set by; for a date formatter, the
|
||||
* values from the UDateFormatField enum. For more information, see the
|
||||
* descriptions of format functions that take a UFieldPositionIterator*
|
||||
* parameter, such as {@link #udat_formatForFields}.
|
||||
*
|
||||
* @stable ICU 55
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ufieldpositer_next(UFieldPositionIterator *fpositer,
|
||||
int32_t *beginIndex, int32_t *endIndex);
|
||||
|
||||
#endif /* #if !UCONFIG_NO_FORMATTING */
|
||||
|
||||
#endif
|
||||
+1380
File diff suppressed because it is too large
Load Diff
+62
@@ -0,0 +1,62 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 1999-2006, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
* file name: umisc.h
|
||||
* encoding: UTF-8
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*
|
||||
* created on: 1999oct15
|
||||
* created by: Markus W. Scherer
|
||||
*/
|
||||
|
||||
#ifndef UMISC_H
|
||||
#define UMISC_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
/**
|
||||
* \file
|
||||
* \brief C API: Miscellaneous definitions
|
||||
*
|
||||
* This file contains miscellaneous definitions for the C APIs.
|
||||
*/
|
||||
|
||||
U_CDECL_BEGIN
|
||||
|
||||
/** A struct representing a range of text containing a specific field
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
typedef struct UFieldPosition {
|
||||
/**
|
||||
* The field
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
int32_t field;
|
||||
/**
|
||||
* The start of the text range containing field
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
int32_t beginIndex;
|
||||
/**
|
||||
* The limit of the text range containing field
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
int32_t endIndex;
|
||||
} UFieldPosition;
|
||||
|
||||
#if !UCONFIG_NO_SERVICE
|
||||
/**
|
||||
* Opaque type returned by registerInstance, registerFactory and unregister for service registration.
|
||||
* @stable ICU 2.6
|
||||
*/
|
||||
typedef const void* URegistryKey;
|
||||
#endif
|
||||
|
||||
U_CDECL_END
|
||||
|
||||
#endif
|
||||
+606
@@ -0,0 +1,606 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
/*
|
||||
*******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2009-2015, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
*******************************************************************************
|
||||
* file name: unorm2.h
|
||||
* encoding: UTF-8
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*
|
||||
* created on: 2009dec15
|
||||
* created by: Markus W. Scherer
|
||||
*/
|
||||
|
||||
#ifndef __UNORM2_H__
|
||||
#define __UNORM2_H__
|
||||
|
||||
/**
|
||||
* \file
|
||||
* \brief C API: New API for Unicode Normalization.
|
||||
*
|
||||
* Unicode normalization functionality for standard Unicode normalization or
|
||||
* for using custom mapping tables.
|
||||
* All instances of UNormalizer2 are unmodifiable/immutable.
|
||||
* Instances returned by unorm2_getInstance() are singletons that must not be deleted by the caller.
|
||||
* For more details see the Normalizer2 C++ class.
|
||||
*/
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/stringoptions.h"
|
||||
#include "unicode/uset.h"
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
#include "unicode/localpointer.h"
|
||||
#endif // U_SHOW_CPLUSPLUS_API
|
||||
|
||||
/**
|
||||
* Constants for normalization modes.
|
||||
* For details about standard Unicode normalization forms
|
||||
* and about the algorithms which are also used with custom mapping tables
|
||||
* see http://www.unicode.org/unicode/reports/tr15/
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
typedef enum {
|
||||
/**
|
||||
* Decomposition followed by composition.
|
||||
* Same as standard NFC when using an "nfc" instance.
|
||||
* Same as standard NFKC when using an "nfkc" instance.
|
||||
* For details about standard Unicode normalization forms
|
||||
* see http://www.unicode.org/unicode/reports/tr15/
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
UNORM2_COMPOSE,
|
||||
/**
|
||||
* Map, and reorder canonically.
|
||||
* Same as standard NFD when using an "nfc" instance.
|
||||
* Same as standard NFKD when using an "nfkc" instance.
|
||||
* For details about standard Unicode normalization forms
|
||||
* see http://www.unicode.org/unicode/reports/tr15/
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
UNORM2_DECOMPOSE,
|
||||
/**
|
||||
* "Fast C or D" form.
|
||||
* If a string is in this form, then further decomposition <i>without reordering</i>
|
||||
* would yield the same form as DECOMPOSE.
|
||||
* Text in "Fast C or D" form can be processed efficiently with data tables
|
||||
* that are "canonically closed", that is, that provide equivalent data for
|
||||
* equivalent text, without having to be fully normalized.
|
||||
* Not a standard Unicode normalization form.
|
||||
* Not a unique form: Different FCD strings can be canonically equivalent.
|
||||
* For details see http://www.unicode.org/notes/tn5/#FCD
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
UNORM2_FCD,
|
||||
/**
|
||||
* Compose only contiguously.
|
||||
* Also known as "FCC" or "Fast C Contiguous".
|
||||
* The result will often but not always be in NFC.
|
||||
* The result will conform to FCD which is useful for processing.
|
||||
* Not a standard Unicode normalization form.
|
||||
* For details see http://www.unicode.org/notes/tn5/#FCC
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
UNORM2_COMPOSE_CONTIGUOUS
|
||||
} UNormalization2Mode;
|
||||
|
||||
/**
|
||||
* Result values for normalization quick check functions.
|
||||
* For details see http://www.unicode.org/reports/tr15/#Detecting_Normalization_Forms
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
typedef enum UNormalizationCheckResult {
|
||||
/**
|
||||
* The input string is not in the normalization form.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
UNORM_NO,
|
||||
/**
|
||||
* The input string is in the normalization form.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
UNORM_YES,
|
||||
/**
|
||||
* The input string may or may not be in the normalization form.
|
||||
* This value is only returned for composition forms like NFC and FCC,
|
||||
* when a backward-combining character is found for which the surrounding text
|
||||
* would have to be analyzed further.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
UNORM_MAYBE
|
||||
} UNormalizationCheckResult;
|
||||
|
||||
/**
|
||||
* Opaque C service object type for the new normalization API.
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
struct UNormalizer2;
|
||||
typedef struct UNormalizer2 UNormalizer2; /**< C typedef for struct UNormalizer2. @stable ICU 4.4 */
|
||||
|
||||
#if !UCONFIG_NO_NORMALIZATION
|
||||
|
||||
/**
|
||||
* Returns a UNormalizer2 instance for Unicode NFC normalization.
|
||||
* Same as unorm2_getInstance(NULL, "nfc", UNORM2_COMPOSE, pErrorCode).
|
||||
* Returns an unmodifiable singleton instance. Do not delete it.
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return the requested Normalizer2, if successful
|
||||
* @stable ICU 49
|
||||
*/
|
||||
U_CAPI const UNormalizer2 * U_EXPORT2
|
||||
unorm2_getNFCInstance(UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Returns a UNormalizer2 instance for Unicode NFD normalization.
|
||||
* Same as unorm2_getInstance(NULL, "nfc", UNORM2_DECOMPOSE, pErrorCode).
|
||||
* Returns an unmodifiable singleton instance. Do not delete it.
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return the requested Normalizer2, if successful
|
||||
* @stable ICU 49
|
||||
*/
|
||||
U_CAPI const UNormalizer2 * U_EXPORT2
|
||||
unorm2_getNFDInstance(UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Returns a UNormalizer2 instance for Unicode NFKC normalization.
|
||||
* Same as unorm2_getInstance(NULL, "nfkc", UNORM2_COMPOSE, pErrorCode).
|
||||
* Returns an unmodifiable singleton instance. Do not delete it.
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return the requested Normalizer2, if successful
|
||||
* @stable ICU 49
|
||||
*/
|
||||
U_CAPI const UNormalizer2 * U_EXPORT2
|
||||
unorm2_getNFKCInstance(UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Returns a UNormalizer2 instance for Unicode NFKD normalization.
|
||||
* Same as unorm2_getInstance(NULL, "nfkc", UNORM2_DECOMPOSE, pErrorCode).
|
||||
* Returns an unmodifiable singleton instance. Do not delete it.
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return the requested Normalizer2, if successful
|
||||
* @stable ICU 49
|
||||
*/
|
||||
U_CAPI const UNormalizer2 * U_EXPORT2
|
||||
unorm2_getNFKDInstance(UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Returns a UNormalizer2 instance for Unicode NFKC_Casefold normalization.
|
||||
* Same as unorm2_getInstance(NULL, "nfkc_cf", UNORM2_COMPOSE, pErrorCode).
|
||||
* Returns an unmodifiable singleton instance. Do not delete it.
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return the requested Normalizer2, if successful
|
||||
* @stable ICU 49
|
||||
*/
|
||||
U_CAPI const UNormalizer2 * U_EXPORT2
|
||||
unorm2_getNFKCCasefoldInstance(UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Returns a UNormalizer2 instance which uses the specified data file
|
||||
* (packageName/name similar to ucnv_openPackage() and ures_open()/ResourceBundle)
|
||||
* and which composes or decomposes text according to the specified mode.
|
||||
* Returns an unmodifiable singleton instance. Do not delete it.
|
||||
*
|
||||
* Use packageName=NULL for data files that are part of ICU's own data.
|
||||
* Use name="nfc" and UNORM2_COMPOSE/UNORM2_DECOMPOSE for Unicode standard NFC/NFD.
|
||||
* Use name="nfkc" and UNORM2_COMPOSE/UNORM2_DECOMPOSE for Unicode standard NFKC/NFKD.
|
||||
* Use name="nfkc_cf" and UNORM2_COMPOSE for Unicode standard NFKC_CF=NFKC_Casefold.
|
||||
*
|
||||
* @param packageName NULL for ICU built-in data, otherwise application data package name
|
||||
* @param name "nfc" or "nfkc" or "nfkc_cf" or name of custom data file
|
||||
* @param mode normalization mode (compose or decompose etc.)
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return the requested UNormalizer2, if successful
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI const UNormalizer2 * U_EXPORT2
|
||||
unorm2_getInstance(const char *packageName,
|
||||
const char *name,
|
||||
UNormalization2Mode mode,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Constructs a filtered normalizer wrapping any UNormalizer2 instance
|
||||
* and a filter set.
|
||||
* Both are aliased and must not be modified or deleted while this object
|
||||
* is used.
|
||||
* The filter set should be frozen; otherwise the performance will suffer greatly.
|
||||
* @param norm2 wrapped UNormalizer2 instance
|
||||
* @param filterSet USet which determines the characters to be normalized
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return the requested UNormalizer2, if successful
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI UNormalizer2 * U_EXPORT2
|
||||
unorm2_openFiltered(const UNormalizer2 *norm2, const USet *filterSet, UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Closes a UNormalizer2 instance from unorm2_openFiltered().
|
||||
* Do not close instances from unorm2_getInstance()!
|
||||
* @param norm2 UNormalizer2 instance to be closed
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
unorm2_close(UNormalizer2 *norm2);
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* \class LocalUNormalizer2Pointer
|
||||
* "Smart pointer" class, closes a UNormalizer2 via unorm2_close().
|
||||
* For most methods see the LocalPointerBase base class.
|
||||
*
|
||||
* @see LocalPointerBase
|
||||
* @see LocalPointer
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_DEFINE_LOCAL_OPEN_POINTER(LocalUNormalizer2Pointer, UNormalizer2, unorm2_close);
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Writes the normalized form of the source string to the destination string
|
||||
* (replacing its contents) and returns the length of the destination string.
|
||||
* The source and destination strings must be different buffers.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param src source string
|
||||
* @param length length of the source string, or -1 if NUL-terminated
|
||||
* @param dest destination string; its contents is replaced with normalized src
|
||||
* @param capacity number of UChars that can be written to dest
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return dest
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
unorm2_normalize(const UNormalizer2 *norm2,
|
||||
const UChar *src, int32_t length,
|
||||
UChar *dest, int32_t capacity,
|
||||
UErrorCode *pErrorCode);
|
||||
/**
|
||||
* Appends the normalized form of the second string to the first string
|
||||
* (merging them at the boundary) and returns the length of the first string.
|
||||
* The result is normalized if the first string was normalized.
|
||||
* The first and second strings must be different buffers.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param first string, should be normalized
|
||||
* @param firstLength length of the first string, or -1 if NUL-terminated
|
||||
* @param firstCapacity number of UChars that can be written to first
|
||||
* @param second string, will be normalized
|
||||
* @param secondLength length of the source string, or -1 if NUL-terminated
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return first
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
unorm2_normalizeSecondAndAppend(const UNormalizer2 *norm2,
|
||||
UChar *first, int32_t firstLength, int32_t firstCapacity,
|
||||
const UChar *second, int32_t secondLength,
|
||||
UErrorCode *pErrorCode);
|
||||
/**
|
||||
* Appends the second string to the first string
|
||||
* (merging them at the boundary) and returns the length of the first string.
|
||||
* The result is normalized if both the strings were normalized.
|
||||
* The first and second strings must be different buffers.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param first string, should be normalized
|
||||
* @param firstLength length of the first string, or -1 if NUL-terminated
|
||||
* @param firstCapacity number of UChars that can be written to first
|
||||
* @param second string, should be normalized
|
||||
* @param secondLength length of the source string, or -1 if NUL-terminated
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return first
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
unorm2_append(const UNormalizer2 *norm2,
|
||||
UChar *first, int32_t firstLength, int32_t firstCapacity,
|
||||
const UChar *second, int32_t secondLength,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Gets the decomposition mapping of c.
|
||||
* Roughly equivalent to normalizing the String form of c
|
||||
* on a UNORM2_DECOMPOSE UNormalizer2 instance, but much faster, and except that this function
|
||||
* returns a negative value and does not write a string
|
||||
* if c does not have a decomposition mapping in this instance's data.
|
||||
* This function is independent of the mode of the UNormalizer2.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param c code point
|
||||
* @param decomposition String buffer which will be set to c's
|
||||
* decomposition mapping, if there is one.
|
||||
* @param capacity number of UChars that can be written to decomposition
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return the non-negative length of c's decomposition, if there is one; otherwise a negative value
|
||||
* @stable ICU 4.6
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
unorm2_getDecomposition(const UNormalizer2 *norm2,
|
||||
UChar32 c, UChar *decomposition, int32_t capacity,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Gets the raw decomposition mapping of c.
|
||||
*
|
||||
* This is similar to the unorm2_getDecomposition() function but returns the
|
||||
* raw decomposition mapping as specified in UnicodeData.txt or
|
||||
* (for custom data) in the mapping files processed by the gennorm2 tool.
|
||||
* By contrast, unorm2_getDecomposition() returns the processed,
|
||||
* recursively-decomposed version of this mapping.
|
||||
*
|
||||
* When used on a standard NFKC Normalizer2 instance,
|
||||
* unorm2_getRawDecomposition() returns the Unicode Decomposition_Mapping (dm) property.
|
||||
*
|
||||
* When used on a standard NFC Normalizer2 instance,
|
||||
* it returns the Decomposition_Mapping only if the Decomposition_Type (dt) is Canonical (Can);
|
||||
* in this case, the result contains either one or two code points (=1..4 UChars).
|
||||
*
|
||||
* This function is independent of the mode of the UNormalizer2.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param c code point
|
||||
* @param decomposition String buffer which will be set to c's
|
||||
* raw decomposition mapping, if there is one.
|
||||
* @param capacity number of UChars that can be written to decomposition
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return the non-negative length of c's raw decomposition, if there is one; otherwise a negative value
|
||||
* @stable ICU 49
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
unorm2_getRawDecomposition(const UNormalizer2 *norm2,
|
||||
UChar32 c, UChar *decomposition, int32_t capacity,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Performs pairwise composition of a & b and returns the composite if there is one.
|
||||
*
|
||||
* Returns a composite code point c only if c has a two-way mapping to a+b.
|
||||
* In standard Unicode normalization, this means that
|
||||
* c has a canonical decomposition to a+b
|
||||
* and c does not have the Full_Composition_Exclusion property.
|
||||
*
|
||||
* This function is independent of the mode of the UNormalizer2.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param a A (normalization starter) code point.
|
||||
* @param b Another code point.
|
||||
* @return The non-negative composite code point if there is one; otherwise a negative value.
|
||||
* @stable ICU 49
|
||||
*/
|
||||
U_CAPI UChar32 U_EXPORT2
|
||||
unorm2_composePair(const UNormalizer2 *norm2, UChar32 a, UChar32 b);
|
||||
|
||||
/**
|
||||
* Gets the combining class of c.
|
||||
* The default implementation returns 0
|
||||
* but all standard implementations return the Unicode Canonical_Combining_Class value.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param c code point
|
||||
* @return c's combining class
|
||||
* @stable ICU 49
|
||||
*/
|
||||
U_CAPI uint8_t U_EXPORT2
|
||||
unorm2_getCombiningClass(const UNormalizer2 *norm2, UChar32 c);
|
||||
|
||||
/**
|
||||
* Tests if the string is normalized.
|
||||
* Internally, in cases where the quickCheck() method would return "maybe"
|
||||
* (which is only possible for the two COMPOSE modes) this method
|
||||
* resolves to "yes" or "no" to provide a definitive result,
|
||||
* at the cost of doing more work in those cases.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param s input string
|
||||
* @param length length of the string, or -1 if NUL-terminated
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return true if s is normalized
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
unorm2_isNormalized(const UNormalizer2 *norm2,
|
||||
const UChar *s, int32_t length,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Tests if the string is normalized.
|
||||
* For the two COMPOSE modes, the result could be "maybe" in cases that
|
||||
* would take a little more work to resolve definitively.
|
||||
* Use spanQuickCheckYes() and normalizeSecondAndAppend() for a faster
|
||||
* combination of quick check + normalization, to avoid
|
||||
* re-checking the "yes" prefix.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param s input string
|
||||
* @param length length of the string, or -1 if NUL-terminated
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return UNormalizationCheckResult
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI UNormalizationCheckResult U_EXPORT2
|
||||
unorm2_quickCheck(const UNormalizer2 *norm2,
|
||||
const UChar *s, int32_t length,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Returns the end of the normalized substring of the input string.
|
||||
* In other words, with <code>end=spanQuickCheckYes(s, ec);</code>
|
||||
* the substring <code>UnicodeString(s, 0, end)</code>
|
||||
* will pass the quick check with a "yes" result.
|
||||
*
|
||||
* The returned end index is usually one or more characters before the
|
||||
* "no" or "maybe" character: The end index is at a normalization boundary.
|
||||
* (See the class documentation for more about normalization boundaries.)
|
||||
*
|
||||
* When the goal is a normalized string and most input strings are expected
|
||||
* to be normalized already, then call this method,
|
||||
* and if it returns a prefix shorter than the input string,
|
||||
* copy that prefix and use normalizeSecondAndAppend() for the remainder.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param s input string
|
||||
* @param length length of the string, or -1 if NUL-terminated
|
||||
* @param pErrorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return "yes" span end index
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
unorm2_spanQuickCheckYes(const UNormalizer2 *norm2,
|
||||
const UChar *s, int32_t length,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Tests if the character always has a normalization boundary before it,
|
||||
* regardless of context.
|
||||
* For details see the Normalizer2 base class documentation.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param c character to test
|
||||
* @return true if c has a normalization boundary before it
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
unorm2_hasBoundaryBefore(const UNormalizer2 *norm2, UChar32 c);
|
||||
|
||||
/**
|
||||
* Tests if the character always has a normalization boundary after it,
|
||||
* regardless of context.
|
||||
* For details see the Normalizer2 base class documentation.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param c character to test
|
||||
* @return true if c has a normalization boundary after it
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
unorm2_hasBoundaryAfter(const UNormalizer2 *norm2, UChar32 c);
|
||||
|
||||
/**
|
||||
* Tests if the character is normalization-inert.
|
||||
* For details see the Normalizer2 base class documentation.
|
||||
* @param norm2 UNormalizer2 instance
|
||||
* @param c character to test
|
||||
* @return true if c is normalization-inert
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
unorm2_isInert(const UNormalizer2 *norm2, UChar32 c);
|
||||
|
||||
/**
|
||||
* 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_CAPI 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__ */
|
||||
+1425
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,707 @@
|
||||
// © 2018 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
|
||||
#ifndef __UNUMBERFORMATTER_H__
|
||||
#define __UNUMBERFORMATTER_H__
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#include "unicode/parseerr.h"
|
||||
#include "unicode/ufieldpositer.h"
|
||||
#include "unicode/umisc.h"
|
||||
|
||||
|
||||
/**
|
||||
* \file
|
||||
* \brief C API: Localized number formatting; not recommended for C++.
|
||||
*
|
||||
* This is the C-compatible version of the NumberFormatter API introduced in ICU 60. C++ users should
|
||||
* include unicode/numberformatter.h and use the proper C++ APIs.
|
||||
*
|
||||
* The C API accepts a number skeleton string for specifying the settings for formatting, which covers a
|
||||
* very large subset of all possible number formatting features. For more information on number skeleton
|
||||
* strings, see unicode/numberformatter.h.
|
||||
*
|
||||
* When using UNumberFormatter, which is treated as immutable, the results are exported to a mutable
|
||||
* UFormattedNumber object, which you subsequently use for populating your string buffer or iterating over
|
||||
* the fields.
|
||||
*
|
||||
* Example code:
|
||||
* <pre>
|
||||
* // Setup:
|
||||
* UErrorCode ec = U_ZERO_ERROR;
|
||||
* UNumberFormatter* uformatter = unumf_openForSkeletonAndLocale(u"precision-integer", -1, "en", &ec);
|
||||
* UFormattedNumber* uresult = unumf_openResult(&ec);
|
||||
* if (U_FAILURE(ec)) { return; }
|
||||
*
|
||||
* // Format a double:
|
||||
* unumf_formatDouble(uformatter, 5142.3, uresult, &ec);
|
||||
* if (U_FAILURE(ec)) { return; }
|
||||
*
|
||||
* // Export the string to a malloc'd buffer:
|
||||
* int32_t len = unumf_resultToString(uresult, NULL, 0, &ec);
|
||||
* // at this point, ec == U_BUFFER_OVERFLOW_ERROR
|
||||
* ec = U_ZERO_ERROR;
|
||||
* UChar* buffer = (UChar*) malloc((len+1)*sizeof(UChar));
|
||||
* unumf_resultToString(uresult, buffer, len+1, &ec);
|
||||
* if (U_FAILURE(ec)) { return; }
|
||||
* // buffer should equal "5,142"
|
||||
*
|
||||
* // Cleanup:
|
||||
* unumf_close(uformatter);
|
||||
* unumf_closeResult(uresult);
|
||||
* free(buffer);
|
||||
* </pre>
|
||||
*
|
||||
* If you are a C++ user linking against the C libraries, you can use the LocalPointer versions of these
|
||||
* APIs. The following example uses LocalPointer with the decimal number and field position APIs:
|
||||
*
|
||||
* <pre>
|
||||
* // Setup:
|
||||
* LocalUNumberFormatterPointer uformatter(unumf_openForSkeletonAndLocale(u"percent", -1, "en", &ec));
|
||||
* LocalUFormattedNumberPointer uresult(unumf_openResult(&ec));
|
||||
* if (U_FAILURE(ec)) { return; }
|
||||
*
|
||||
* // Format a decimal number:
|
||||
* unumf_formatDecimal(uformatter.getAlias(), "9.87E-3", -1, uresult.getAlias(), &ec);
|
||||
* if (U_FAILURE(ec)) { return; }
|
||||
*
|
||||
* // Get the location of the percent sign:
|
||||
* UFieldPosition ufpos = {UNUM_PERCENT_FIELD, 0, 0};
|
||||
* unumf_resultNextFieldPosition(uresult.getAlias(), &ufpos, &ec);
|
||||
* // ufpos should contain beginIndex=7 and endIndex=8 since the string is "0.00987%"
|
||||
*
|
||||
* // No need to do any cleanup since we are using LocalPointer.
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
/**
|
||||
* An enum declaring how to resolve conflicts between maximum fraction digits and maximum
|
||||
* significant digits.
|
||||
*
|
||||
* There are two modes, RELAXED and STRICT:
|
||||
*
|
||||
* - RELAXED: Relax one of the two constraints (fraction digits or significant digits) in order
|
||||
* to round the number to a higher level of precision.
|
||||
* - STRICT: Enforce both constraints, resulting in the number being rounded to a lower
|
||||
* level of precision.
|
||||
*
|
||||
* The default settings for compact notation rounding are Max-Fraction = 0 (round to the nearest
|
||||
* integer), Max-Significant = 2 (round to 2 significant digits), and priority RELAXED (choose
|
||||
* the constraint that results in more digits being displayed).
|
||||
*
|
||||
* Conflicting *minimum* fraction and significant digits are always resolved in the direction that
|
||||
* results in more trailing zeros.
|
||||
*
|
||||
* Example 1: Consider the number 3.141, with various different settings:
|
||||
*
|
||||
* - Max-Fraction = 1: "3.1"
|
||||
* - Max-Significant = 3: "3.14"
|
||||
*
|
||||
* The rounding priority determines how to resolve the conflict when both Max-Fraction and
|
||||
* Max-Significant are set. With RELAXED, the less-strict setting (the one that causes more digits
|
||||
* to be displayed) will be used; Max-Significant wins. With STRICT, the more-strict setting (the
|
||||
* one that causes fewer digits to be displayed) will be used; Max-Fraction wins.
|
||||
*
|
||||
* Example 2: Consider the number 8317, with various different settings:
|
||||
*
|
||||
* - Max-Fraction = 1: "8317"
|
||||
* - Max-Significant = 3: "8320"
|
||||
*
|
||||
* Here, RELAXED favors Max-Fraction and STRICT favors Max-Significant. Note that this larger
|
||||
* number caused the two modes to favor the opposite result.
|
||||
*
|
||||
* @stable ICU 69
|
||||
*/
|
||||
typedef enum UNumberRoundingPriority {
|
||||
/**
|
||||
* Favor greater precision by relaxing one of the rounding constraints.
|
||||
*
|
||||
* @stable ICU 69
|
||||
*/
|
||||
UNUM_ROUNDING_PRIORITY_RELAXED,
|
||||
|
||||
/**
|
||||
* Favor adherence to all rounding constraints by producing lower precision.
|
||||
*
|
||||
* @stable ICU 69
|
||||
*/
|
||||
UNUM_ROUNDING_PRIORITY_STRICT,
|
||||
} UNumberRoundingPriority;
|
||||
|
||||
/**
|
||||
* An enum declaring how to render units, including currencies. Example outputs when formatting 123 USD and 123
|
||||
* meters in <em>en-CA</em>:
|
||||
*
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>NARROW*: "$123.00" and "123 m"
|
||||
* <li>SHORT: "US$ 123.00" and "123 m"
|
||||
* <li>FULL_NAME: "123.00 US dollars" and "123 meters"
|
||||
* <li>ISO_CODE: "USD 123.00" and undefined behavior
|
||||
* <li>HIDDEN: "123.00" and "123"
|
||||
* </ul>
|
||||
*
|
||||
* <p>
|
||||
* This enum is similar to {@link UMeasureFormatWidth}.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
typedef enum UNumberUnitWidth {
|
||||
/**
|
||||
* Print an abbreviated version of the unit name. Similar to SHORT, but always use the shortest available
|
||||
* abbreviation or symbol. This option can be used when the context hints at the identity of the unit. For more
|
||||
* information on the difference between NARROW and SHORT, see SHORT.
|
||||
*
|
||||
* <p>
|
||||
* In CLDR, this option corresponds to the "Narrow" format for measure units and the "¤¤¤¤¤" placeholder for
|
||||
* currencies.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_UNIT_WIDTH_NARROW = 0,
|
||||
|
||||
/**
|
||||
* Print an abbreviated version of the unit name. Similar to NARROW, but use a slightly wider abbreviation or
|
||||
* symbol when there may be ambiguity. This is the default behavior.
|
||||
*
|
||||
* <p>
|
||||
* For example, in <em>es-US</em>, the SHORT form for Fahrenheit is "{0} °F", but the NARROW form is "{0}°",
|
||||
* since Fahrenheit is the customary unit for temperature in that locale.
|
||||
*
|
||||
* <p>
|
||||
* In CLDR, this option corresponds to the "Short" format for measure units and the "¤" placeholder for
|
||||
* currencies.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_UNIT_WIDTH_SHORT = 1,
|
||||
|
||||
/**
|
||||
* Print the full name of the unit, without any abbreviations.
|
||||
*
|
||||
* <p>
|
||||
* In CLDR, this option corresponds to the default format for measure units and the "¤¤¤" placeholder for
|
||||
* currencies.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_UNIT_WIDTH_FULL_NAME = 2,
|
||||
|
||||
/**
|
||||
* Use the three-digit ISO XXX code in place of the symbol for displaying currencies. The behavior of this
|
||||
* option is currently undefined for use with measure units.
|
||||
*
|
||||
* <p>
|
||||
* In CLDR, this option corresponds to the "¤¤" placeholder for currencies.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_UNIT_WIDTH_ISO_CODE = 3,
|
||||
|
||||
/**
|
||||
* Use the formal variant of the currency symbol; for example, "NT$" for the New Taiwan
|
||||
* dollar in zh-TW.
|
||||
*
|
||||
* <p>
|
||||
* Behavior of this option with non-currency units is not defined at this time.
|
||||
*
|
||||
* @stable ICU 68
|
||||
*/
|
||||
UNUM_UNIT_WIDTH_FORMAL = 4,
|
||||
|
||||
/**
|
||||
* Use the alternate variant of the currency symbol; for example, "TL" for the Turkish
|
||||
* lira (TRY).
|
||||
*
|
||||
* <p>
|
||||
* Behavior of this option with non-currency units is not defined at this time.
|
||||
*
|
||||
* @stable ICU 68
|
||||
*/
|
||||
UNUM_UNIT_WIDTH_VARIANT = 5,
|
||||
|
||||
/**
|
||||
* Format the number according to the specified unit, but do not display the unit. For currencies, apply
|
||||
* monetary symbols and formats as with SHORT, but omit the currency symbol. For measure units, the behavior is
|
||||
* equivalent to not specifying the unit at all.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_UNIT_WIDTH_HIDDEN = 6,
|
||||
|
||||
// Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
|
||||
// needed for unconditionalized struct MacroProps
|
||||
/**
|
||||
* One more than the highest UNumberUnitWidth value.
|
||||
*
|
||||
* @internal ICU 60: The numeric value may change over time; see ICU ticket #12420.
|
||||
*/
|
||||
UNUM_UNIT_WIDTH_COUNT = 7
|
||||
} UNumberUnitWidth;
|
||||
|
||||
/**
|
||||
* An enum declaring the strategy for when and how to display grouping separators (i.e., the
|
||||
* separator, often a comma or period, after every 2-3 powers of ten). The choices are several
|
||||
* pre-built strategies for different use cases that employ locale data whenever possible. Example
|
||||
* outputs for 1234 and 1234567 in <em>en-IN</em>:
|
||||
*
|
||||
* <ul>
|
||||
* <li>OFF: 1234 and 12345
|
||||
* <li>MIN2: 1234 and 12,34,567
|
||||
* <li>AUTO: 1,234 and 12,34,567
|
||||
* <li>ON_ALIGNED: 1,234 and 12,34,567
|
||||
* <li>THOUSANDS: 1,234 and 1,234,567
|
||||
* </ul>
|
||||
*
|
||||
* <p>
|
||||
* The default is AUTO, which displays grouping separators unless the locale data says that grouping
|
||||
* is not customary. To force grouping for all numbers greater than 1000 consistently across locales,
|
||||
* use ON_ALIGNED. On the other hand, to display grouping less frequently than the default, use MIN2
|
||||
* or OFF. See the docs of each option for details.
|
||||
*
|
||||
* <p>
|
||||
* Note: This enum specifies the strategy for grouping sizes. To set which character to use as the
|
||||
* grouping separator, use the "symbols" setter.
|
||||
*
|
||||
* @stable ICU 63
|
||||
*/
|
||||
typedef enum UNumberGroupingStrategy {
|
||||
/**
|
||||
* Do not display grouping separators in any locale.
|
||||
*
|
||||
* @stable ICU 61
|
||||
*/
|
||||
UNUM_GROUPING_OFF,
|
||||
|
||||
/**
|
||||
* Display grouping using locale defaults, except do not show grouping on values smaller than
|
||||
* 10000 (such that there is a <em>minimum of two digits</em> before the first separator).
|
||||
*
|
||||
* <p>
|
||||
* Note that locales may restrict grouping separators to be displayed only on 1 million or
|
||||
* greater (for example, ee and hu) or disable grouping altogether (for example, bg currency).
|
||||
*
|
||||
* <p>
|
||||
* Locale data is used to determine whether to separate larger numbers into groups of 2
|
||||
* (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
|
||||
*
|
||||
* @stable ICU 61
|
||||
*/
|
||||
UNUM_GROUPING_MIN2,
|
||||
|
||||
/**
|
||||
* Display grouping using the default strategy for all locales. This is the default behavior.
|
||||
*
|
||||
* <p>
|
||||
* Note that locales may restrict grouping separators to be displayed only on 1 million or
|
||||
* greater (for example, ee and hu) or disable grouping altogether (for example, bg currency).
|
||||
*
|
||||
* <p>
|
||||
* Locale data is used to determine whether to separate larger numbers into groups of 2
|
||||
* (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
|
||||
*
|
||||
* @stable ICU 61
|
||||
*/
|
||||
UNUM_GROUPING_AUTO,
|
||||
|
||||
/**
|
||||
* Always display the grouping separator on values of at least 1000.
|
||||
*
|
||||
* <p>
|
||||
* This option ignores the locale data that restricts or disables grouping, described in MIN2 and
|
||||
* AUTO. This option may be useful to normalize the alignment of numbers, such as in a
|
||||
* spreadsheet.
|
||||
*
|
||||
* <p>
|
||||
* Locale data is used to determine whether to separate larger numbers into groups of 2
|
||||
* (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
|
||||
*
|
||||
* @stable ICU 61
|
||||
*/
|
||||
UNUM_GROUPING_ON_ALIGNED,
|
||||
|
||||
/**
|
||||
* Use the Western defaults: groups of 3 and enabled for all numbers 1000 or greater. Do not use
|
||||
* locale data for determining the grouping strategy.
|
||||
*
|
||||
* @stable ICU 61
|
||||
*/
|
||||
UNUM_GROUPING_THOUSANDS
|
||||
|
||||
#ifndef U_HIDE_INTERNAL_API
|
||||
,
|
||||
/**
|
||||
* One more than the highest UNumberGroupingStrategy value.
|
||||
*
|
||||
* @internal ICU 62: The numeric value may change over time; see ICU ticket #12420.
|
||||
*/
|
||||
UNUM_GROUPING_COUNT
|
||||
#endif /* U_HIDE_INTERNAL_API */
|
||||
|
||||
} UNumberGroupingStrategy;
|
||||
|
||||
/**
|
||||
* An enum declaring how to denote positive and negative numbers. Example outputs when formatting
|
||||
* 123, 0, and -123 in <em>en-US</em>:
|
||||
*
|
||||
* <ul>
|
||||
* <li>AUTO: "123", "0", and "-123"
|
||||
* <li>ALWAYS: "+123", "+0", and "-123"
|
||||
* <li>NEVER: "123", "0", and "123"
|
||||
* <li>ACCOUNTING: "$123", "$0", and "($123)"
|
||||
* <li>ACCOUNTING_ALWAYS: "+$123", "+$0", and "($123)"
|
||||
* <li>EXCEPT_ZERO: "+123", "0", and "-123"
|
||||
* <li>ACCOUNTING_EXCEPT_ZERO: "+$123", "$0", and "($123)"
|
||||
* </ul>
|
||||
*
|
||||
* <p>
|
||||
* The exact format, including the position and the code point of the sign, differ by locale.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
typedef enum UNumberSignDisplay {
|
||||
/**
|
||||
* Show the minus sign on negative numbers, and do not show the sign on positive numbers. This is the default
|
||||
* behavior.
|
||||
*
|
||||
* If using this option, a sign will be displayed on negative zero, including negative numbers
|
||||
* that round to zero. To hide the sign on negative zero, use the NEGATIVE option.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_SIGN_AUTO,
|
||||
|
||||
/**
|
||||
* Show the minus sign on negative numbers and the plus sign on positive numbers, including zero.
|
||||
* To hide the sign on zero, see {@link UNUM_SIGN_EXCEPT_ZERO}.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_SIGN_ALWAYS,
|
||||
|
||||
/**
|
||||
* Do not show the sign on positive or negative numbers.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_SIGN_NEVER,
|
||||
|
||||
/**
|
||||
* Use the locale-dependent accounting format on negative numbers, and do not show the sign on positive numbers.
|
||||
*
|
||||
* <p>
|
||||
* The accounting format is defined in CLDR and varies by locale; in many Western locales, the format is a pair
|
||||
* of parentheses around the number.
|
||||
*
|
||||
* <p>
|
||||
* Note: Since CLDR defines the accounting format in the monetary context only, this option falls back to the
|
||||
* AUTO sign display strategy when formatting without a currency unit. This limitation may be lifted in the
|
||||
* future.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_SIGN_ACCOUNTING,
|
||||
|
||||
/**
|
||||
* Use the locale-dependent accounting format on negative numbers, and show the plus sign on
|
||||
* positive numbers, including zero. For more information on the accounting format, see the
|
||||
* ACCOUNTING sign display strategy. To hide the sign on zero, see
|
||||
* {@link UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO}.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_SIGN_ACCOUNTING_ALWAYS,
|
||||
|
||||
/**
|
||||
* Show the minus sign on negative numbers and the plus sign on positive numbers. Do not show a
|
||||
* sign on zero, numbers that round to zero, or NaN.
|
||||
*
|
||||
* @stable ICU 61
|
||||
*/
|
||||
UNUM_SIGN_EXCEPT_ZERO,
|
||||
|
||||
/**
|
||||
* Use the locale-dependent accounting format on negative numbers, and show the plus sign on
|
||||
* positive numbers. Do not show a sign on zero, numbers that round to zero, or NaN. For more
|
||||
* information on the accounting format, see the ACCOUNTING sign display strategy.
|
||||
*
|
||||
* @stable ICU 61
|
||||
*/
|
||||
UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO,
|
||||
|
||||
/**
|
||||
* Same as AUTO, but do not show the sign on negative zero.
|
||||
*
|
||||
* @stable ICU 69
|
||||
*/
|
||||
UNUM_SIGN_NEGATIVE,
|
||||
|
||||
/**
|
||||
* Same as ACCOUNTING, but do not show the sign on negative zero.
|
||||
*
|
||||
* @stable ICU 69
|
||||
*/
|
||||
UNUM_SIGN_ACCOUNTING_NEGATIVE,
|
||||
|
||||
// Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
|
||||
// needed for unconditionalized struct MacroProps
|
||||
/**
|
||||
* One more than the highest UNumberSignDisplay value.
|
||||
*
|
||||
* @internal ICU 60: The numeric value may change over time; see ICU ticket #12420.
|
||||
*/
|
||||
UNUM_SIGN_COUNT = 9,
|
||||
} UNumberSignDisplay;
|
||||
|
||||
/**
|
||||
* An enum declaring how to render the decimal separator.
|
||||
*
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>UNUM_DECIMAL_SEPARATOR_AUTO: "1", "1.1"
|
||||
* <li>UNUM_DECIMAL_SEPARATOR_ALWAYS: "1.", "1.1"
|
||||
* </ul>
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
typedef enum UNumberDecimalSeparatorDisplay {
|
||||
/**
|
||||
* Show the decimal separator when there are one or more digits to display after the separator, and do not show
|
||||
* it otherwise. This is the default behavior.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_DECIMAL_SEPARATOR_AUTO,
|
||||
|
||||
/**
|
||||
* Always show the decimal separator, even if there are no digits to display after the separator.
|
||||
*
|
||||
* @stable ICU 60
|
||||
*/
|
||||
UNUM_DECIMAL_SEPARATOR_ALWAYS,
|
||||
|
||||
// Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
|
||||
// needed for unconditionalized struct MacroProps
|
||||
/**
|
||||
* One more than the highest UNumberDecimalSeparatorDisplay value.
|
||||
*
|
||||
* @internal ICU 60: The numeric value may change over time; see ICU ticket #12420.
|
||||
*/
|
||||
UNUM_DECIMAL_SEPARATOR_COUNT
|
||||
} UNumberDecimalSeparatorDisplay;
|
||||
|
||||
/**
|
||||
* An enum declaring how to render trailing zeros.
|
||||
*
|
||||
* - UNUM_TRAILING_ZERO_AUTO: 0.90, 1.00, 1.10
|
||||
* - UNUM_TRAILING_ZERO_HIDE_IF_WHOLE: 0.90, 1, 1.10
|
||||
*
|
||||
* @stable ICU 69
|
||||
*/
|
||||
typedef enum UNumberTrailingZeroDisplay {
|
||||
/**
|
||||
* Display trailing zeros according to the settings for minimum fraction and significant digits.
|
||||
*
|
||||
* @stable ICU 69
|
||||
*/
|
||||
UNUM_TRAILING_ZERO_AUTO,
|
||||
|
||||
/**
|
||||
* Same as AUTO, but hide trailing zeros after the decimal separator if they are all zero.
|
||||
*
|
||||
* @stable ICU 69
|
||||
*/
|
||||
UNUM_TRAILING_ZERO_HIDE_IF_WHOLE,
|
||||
} UNumberTrailingZeroDisplay;
|
||||
|
||||
struct UNumberFormatter;
|
||||
/**
|
||||
* C-compatible version of icu::number::LocalizedNumberFormatter.
|
||||
*
|
||||
* NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
|
||||
*
|
||||
* @stable ICU 62
|
||||
*/
|
||||
typedef struct UNumberFormatter UNumberFormatter;
|
||||
|
||||
struct UFormattedNumber;
|
||||
/**
|
||||
* C-compatible version of icu::number::FormattedNumber.
|
||||
*
|
||||
* NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
|
||||
*
|
||||
* @stable ICU 62
|
||||
*/
|
||||
typedef struct UFormattedNumber UFormattedNumber;
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new UNumberFormatter for the given skeleton string and locale. This is currently the only
|
||||
* method for creating a new UNumberFormatter.
|
||||
*
|
||||
* Objects of type UNumberFormatter returned by this method are threadsafe.
|
||||
*
|
||||
* For more details on skeleton strings, see the documentation in numberformatter.h. For more details on
|
||||
* the usage of this API, see the documentation at the top of unumberformatter.h.
|
||||
*
|
||||
* For more information on number skeleton strings, see:
|
||||
* https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html
|
||||
*
|
||||
* NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
|
||||
*
|
||||
* @param skeleton The skeleton string, like u"percent precision-integer"
|
||||
* @param skeletonLen The number of UChars in the skeleton string, or -1 if it is NUL-terminated.
|
||||
* @param locale The NUL-terminated locale ID.
|
||||
* @param ec Set if an error occurs.
|
||||
* @stable ICU 62
|
||||
*/
|
||||
U_CAPI UNumberFormatter* U_EXPORT2
|
||||
unumf_openForSkeletonAndLocale(const UChar* skeleton, int32_t skeletonLen, const char* locale,
|
||||
UErrorCode* ec);
|
||||
|
||||
|
||||
/**
|
||||
* Like unumf_openForSkeletonAndLocale, but accepts a UParseError, which will be populated with the
|
||||
* location of a skeleton syntax error if such a syntax error exists.
|
||||
*
|
||||
* For more information on number skeleton strings, see:
|
||||
* https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html
|
||||
*
|
||||
* @param skeleton The skeleton string, like u"percent precision-integer"
|
||||
* @param skeletonLen The number of UChars in the skeleton string, or -1 if it is NUL-terminated.
|
||||
* @param locale The NUL-terminated locale ID.
|
||||
* @param perror A parse error struct populated if an error occurs when parsing. Can be NULL.
|
||||
* If no error occurs, perror->offset will be set to -1.
|
||||
* @param ec Set if an error occurs.
|
||||
* @stable ICU 64
|
||||
*/
|
||||
U_CAPI UNumberFormatter* U_EXPORT2
|
||||
unumf_openForSkeletonAndLocaleWithError(
|
||||
const UChar* skeleton, int32_t skeletonLen, const char* locale, UParseError* perror, UErrorCode* ec);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Uses a UNumberFormatter to format an integer to a UFormattedNumber. A string, field position, and other
|
||||
* information can be retrieved from the UFormattedNumber.
|
||||
*
|
||||
* The UNumberFormatter can be shared between threads. Each thread should have its own local
|
||||
* UFormattedNumber, however, for storing the result of the formatting operation.
|
||||
*
|
||||
* NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
|
||||
*
|
||||
* @param uformatter A formatter object created by unumf_openForSkeletonAndLocale or similar.
|
||||
* @param value The number to be formatted.
|
||||
* @param uresult The object that will be mutated to store the result; see unumf_openResult.
|
||||
* @param ec Set if an error occurs.
|
||||
* @stable ICU 62
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
unumf_formatInt(const UNumberFormatter* uformatter, int64_t value, UFormattedNumber* uresult,
|
||||
UErrorCode* ec);
|
||||
|
||||
|
||||
/**
|
||||
* Uses a UNumberFormatter to format a double to a UFormattedNumber. A string, field position, and other
|
||||
* information can be retrieved from the UFormattedNumber.
|
||||
*
|
||||
* The UNumberFormatter can be shared between threads. Each thread should have its own local
|
||||
* UFormattedNumber, however, for storing the result of the formatting operation.
|
||||
*
|
||||
* NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
|
||||
*
|
||||
* @param uformatter A formatter object created by unumf_openForSkeletonAndLocale or similar.
|
||||
* @param value The number to be formatted.
|
||||
* @param uresult The object that will be mutated to store the result; see unumf_openResult.
|
||||
* @param ec Set if an error occurs.
|
||||
* @stable ICU 62
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
unumf_formatDouble(const UNumberFormatter* uformatter, double value, UFormattedNumber* uresult,
|
||||
UErrorCode* ec);
|
||||
|
||||
|
||||
/**
|
||||
* Uses a UNumberFormatter to format a decimal number to a UFormattedNumber. A string, field position, and
|
||||
* other information can be retrieved from the UFormattedNumber.
|
||||
*
|
||||
* The UNumberFormatter can be shared between threads. Each thread should have its own local
|
||||
* UFormattedNumber, however, for storing the result of the formatting operation.
|
||||
*
|
||||
* The syntax of the unformatted number is a "numeric string" as defined in the Decimal Arithmetic
|
||||
* Specification, available at http://speleotrove.com/decimal
|
||||
*
|
||||
* NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
|
||||
*
|
||||
* @param uformatter A formatter object created by unumf_openForSkeletonAndLocale or similar.
|
||||
* @param value The numeric string to be formatted.
|
||||
* @param valueLen The length of the numeric string, or -1 if it is NUL-terminated.
|
||||
* @param uresult The object that will be mutated to store the result; see unumf_openResult.
|
||||
* @param ec Set if an error occurs.
|
||||
* @stable ICU 62
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
unumf_formatDecimal(const UNumberFormatter* uformatter, const char* value, int32_t valueLen,
|
||||
UFormattedNumber* uresult, UErrorCode* ec);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Releases the UNumberFormatter created by unumf_openForSkeletonAndLocale().
|
||||
*
|
||||
* @param uformatter An object created by unumf_openForSkeletonAndLocale().
|
||||
* @stable ICU 62
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
unumf_close(UNumberFormatter* uformatter);
|
||||
|
||||
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* \class LocalUNumberFormatterPointer
|
||||
* "Smart pointer" class; closes a UNumberFormatter via unumf_close().
|
||||
* For most methods see the LocalPointerBase base class.
|
||||
*
|
||||
* Usage:
|
||||
* <pre>
|
||||
* LocalUNumberFormatterPointer uformatter(unumf_openForSkeletonAndLocale(...));
|
||||
* // no need to explicitly call unumf_close()
|
||||
* </pre>
|
||||
*
|
||||
* @see LocalPointerBase
|
||||
* @see LocalPointer
|
||||
* @stable ICU 62
|
||||
*/
|
||||
U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberFormatterPointer, UNumberFormatter, unumf_close);
|
||||
|
||||
/**
|
||||
* \class LocalUFormattedNumberPointer
|
||||
* "Smart pointer" class; closes a UFormattedNumber via unumf_closeResult().
|
||||
* For most methods see the LocalPointerBase base class.
|
||||
*
|
||||
* Usage:
|
||||
* <pre>
|
||||
* LocalUFormattedNumberPointer uformatter(unumf_openResult(...));
|
||||
* // no need to explicitly call unumf_closeResult()
|
||||
* </pre>
|
||||
*
|
||||
* @see LocalPointerBase
|
||||
* @see LocalPointer
|
||||
* @stable ICU 62
|
||||
*/
|
||||
U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedNumberPointer, UFormattedNumber, unumf_closeResult);
|
||||
|
||||
U_NAMESPACE_END
|
||||
#endif // U_SHOW_CPLUSPLUS_API
|
||||
|
||||
#endif /* #if !UCONFIG_NO_FORMATTING */
|
||||
#endif //__UNUMBERFORMATTER_H__
|
||||
+710
@@ -0,0 +1,710 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
/*
|
||||
**********************************************************************
|
||||
* Copyright (C) 1997-2016, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
**********************************************************************
|
||||
*
|
||||
* File USCRIPT.H
|
||||
*
|
||||
* Modification History:
|
||||
*
|
||||
* Date Name Description
|
||||
* 07/06/2001 Ram Creation.
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef USCRIPT_H
|
||||
#define USCRIPT_H
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
/**
|
||||
* \file
|
||||
* \brief C API: Unicode Script Information
|
||||
*/
|
||||
|
||||
/**
|
||||
* Constants for ISO 15924 script codes.
|
||||
*
|
||||
* The current set of script code constants supports at least all scripts
|
||||
* that are encoded in the version of Unicode which ICU currently supports.
|
||||
* The names of the constants are usually derived from the
|
||||
* Unicode script property value aliases.
|
||||
* See UAX #24 Unicode Script Property (http://www.unicode.org/reports/tr24/)
|
||||
* and http://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt .
|
||||
*
|
||||
* In addition, constants for many ISO 15924 script codes
|
||||
* are included, for use with language tags, CLDR data, and similar.
|
||||
* Some of those codes are not used in the Unicode Character Database (UCD).
|
||||
* For example, there are no characters that have a UCD script property value of
|
||||
* Hans or Hant. All Han ideographs have the Hani script property value in Unicode.
|
||||
*
|
||||
* Private-use codes Qaaa..Qabx are not included, except as used in the UCD or in CLDR.
|
||||
*
|
||||
* Starting with ICU 55, script codes are only added when their scripts
|
||||
* have been or will certainly be encoded in Unicode,
|
||||
* and have been assigned Unicode script property value aliases,
|
||||
* to ensure that their script names are stable and match the names of the constants.
|
||||
* Script codes like Latf and Aran that are not subject to separate encoding
|
||||
* may be added at any time.
|
||||
*
|
||||
* @stable ICU 2.2
|
||||
*/
|
||||
typedef enum UScriptCode {
|
||||
/*
|
||||
* Note: UScriptCode constants and their ISO script code comments
|
||||
* are parsed by preparseucd.py.
|
||||
* It matches lines like
|
||||
* USCRIPT_<Unicode Script value name> = <integer>, / * <ISO script code> * /
|
||||
*/
|
||||
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_INVALID_CODE = -1,
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_COMMON = 0, /* Zyyy */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_INHERITED = 1, /* Zinh */ /* "Code for inherited script", for non-spacing combining marks; also Qaai */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_ARABIC = 2, /* Arab */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_ARMENIAN = 3, /* Armn */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_BENGALI = 4, /* Beng */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_BOPOMOFO = 5, /* Bopo */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_CHEROKEE = 6, /* Cher */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_COPTIC = 7, /* Copt */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_CYRILLIC = 8, /* Cyrl */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_DESERET = 9, /* Dsrt */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_DEVANAGARI = 10, /* Deva */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_ETHIOPIC = 11, /* Ethi */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_GEORGIAN = 12, /* Geor */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_GOTHIC = 13, /* Goth */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_GREEK = 14, /* Grek */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_GUJARATI = 15, /* Gujr */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_GURMUKHI = 16, /* Guru */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_HAN = 17, /* Hani */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_HANGUL = 18, /* Hang */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_HEBREW = 19, /* Hebr */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_HIRAGANA = 20, /* Hira */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_KANNADA = 21, /* Knda */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_KATAKANA = 22, /* Kana */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_KHMER = 23, /* Khmr */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_LAO = 24, /* Laoo */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_LATIN = 25, /* Latn */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_MALAYALAM = 26, /* Mlym */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_MONGOLIAN = 27, /* Mong */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_MYANMAR = 28, /* Mymr */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_OGHAM = 29, /* Ogam */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_OLD_ITALIC = 30, /* Ital */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_ORIYA = 31, /* Orya */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_RUNIC = 32, /* Runr */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_SINHALA = 33, /* Sinh */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_SYRIAC = 34, /* Syrc */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_TAMIL = 35, /* Taml */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_TELUGU = 36, /* Telu */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_THAANA = 37, /* Thaa */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_THAI = 38, /* Thai */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_TIBETAN = 39, /* Tibt */
|
||||
/** Canadian_Aboriginal script. @stable ICU 2.6 */
|
||||
USCRIPT_CANADIAN_ABORIGINAL = 40, /* Cans */
|
||||
/** Canadian_Aboriginal script (alias). @stable ICU 2.2 */
|
||||
USCRIPT_UCAS = USCRIPT_CANADIAN_ABORIGINAL,
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_YI = 41, /* Yiii */
|
||||
/* New scripts in Unicode 3.2 */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_TAGALOG = 42, /* Tglg */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_HANUNOO = 43, /* Hano */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_BUHID = 44, /* Buhd */
|
||||
/** @stable ICU 2.2 */
|
||||
USCRIPT_TAGBANWA = 45, /* Tagb */
|
||||
|
||||
/* New scripts in Unicode 4 */
|
||||
/** @stable ICU 2.6 */
|
||||
USCRIPT_BRAILLE = 46, /* Brai */
|
||||
/** @stable ICU 2.6 */
|
||||
USCRIPT_CYPRIOT = 47, /* Cprt */
|
||||
/** @stable ICU 2.6 */
|
||||
USCRIPT_LIMBU = 48, /* Limb */
|
||||
/** @stable ICU 2.6 */
|
||||
USCRIPT_LINEAR_B = 49, /* Linb */
|
||||
/** @stable ICU 2.6 */
|
||||
USCRIPT_OSMANYA = 50, /* Osma */
|
||||
/** @stable ICU 2.6 */
|
||||
USCRIPT_SHAVIAN = 51, /* Shaw */
|
||||
/** @stable ICU 2.6 */
|
||||
USCRIPT_TAI_LE = 52, /* Tale */
|
||||
/** @stable ICU 2.6 */
|
||||
USCRIPT_UGARITIC = 53, /* Ugar */
|
||||
|
||||
/** New script code in Unicode 4.0.1 @stable ICU 3.0 */
|
||||
USCRIPT_KATAKANA_OR_HIRAGANA = 54,/*Hrkt */
|
||||
|
||||
/* New scripts in Unicode 4.1 */
|
||||
/** @stable ICU 3.4 */
|
||||
USCRIPT_BUGINESE = 55, /* Bugi */
|
||||
/** @stable ICU 3.4 */
|
||||
USCRIPT_GLAGOLITIC = 56, /* Glag */
|
||||
/** @stable ICU 3.4 */
|
||||
USCRIPT_KHAROSHTHI = 57, /* Khar */
|
||||
/** @stable ICU 3.4 */
|
||||
USCRIPT_SYLOTI_NAGRI = 58, /* Sylo */
|
||||
/** @stable ICU 3.4 */
|
||||
USCRIPT_NEW_TAI_LUE = 59, /* Talu */
|
||||
/** @stable ICU 3.4 */
|
||||
USCRIPT_TIFINAGH = 60, /* Tfng */
|
||||
/** @stable ICU 3.4 */
|
||||
USCRIPT_OLD_PERSIAN = 61, /* Xpeo */
|
||||
|
||||
/* New script codes from Unicode and ISO 15924 */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_BALINESE = 62, /* Bali */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_BATAK = 63, /* Batk */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_BLISSYMBOLS = 64, /* Blis */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_BRAHMI = 65, /* Brah */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_CHAM = 66, /* Cham */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_CIRTH = 67, /* Cirt */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_OLD_CHURCH_SLAVONIC_CYRILLIC = 68, /* Cyrs */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_DEMOTIC_EGYPTIAN = 69, /* Egyd */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_HIERATIC_EGYPTIAN = 70, /* Egyh */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_EGYPTIAN_HIEROGLYPHS = 71, /* Egyp */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_KHUTSURI = 72, /* Geok */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_SIMPLIFIED_HAN = 73, /* Hans */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_TRADITIONAL_HAN = 74, /* Hant */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_PAHAWH_HMONG = 75, /* Hmng */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_OLD_HUNGARIAN = 76, /* Hung */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_HARAPPAN_INDUS = 77, /* Inds */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_JAVANESE = 78, /* Java */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_KAYAH_LI = 79, /* Kali */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_LATIN_FRAKTUR = 80, /* Latf */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_LATIN_GAELIC = 81, /* Latg */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_LEPCHA = 82, /* Lepc */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_LINEAR_A = 83, /* Lina */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_MANDAIC = 84, /* Mand */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_MANDAEAN = USCRIPT_MANDAIC,
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_MAYAN_HIEROGLYPHS = 85, /* Maya */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_MEROITIC_HIEROGLYPHS = 86, /* Mero */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_MEROITIC = USCRIPT_MEROITIC_HIEROGLYPHS,
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_NKO = 87, /* Nkoo */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_ORKHON = 88, /* Orkh */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_OLD_PERMIC = 89, /* Perm */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_PHAGS_PA = 90, /* Phag */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_PHOENICIAN = 91, /* Phnx */
|
||||
/** @stable ICU 52 */
|
||||
USCRIPT_MIAO = 92, /* Plrd */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_PHONETIC_POLLARD = USCRIPT_MIAO,
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_RONGORONGO = 93, /* Roro */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_SARATI = 94, /* Sara */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_ESTRANGELO_SYRIAC = 95, /* Syre */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_WESTERN_SYRIAC = 96, /* Syrj */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_EASTERN_SYRIAC = 97, /* Syrn */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_TENGWAR = 98, /* Teng */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_VAI = 99, /* Vaii */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_VISIBLE_SPEECH = 100,/* Visp */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_CUNEIFORM = 101,/* Xsux */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_UNWRITTEN_LANGUAGES = 102,/* Zxxx */
|
||||
/** @stable ICU 3.6 */
|
||||
USCRIPT_UNKNOWN = 103,/* Zzzz */ /* Unknown="Code for uncoded script", for unassigned code points */
|
||||
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_CARIAN = 104,/* Cari */
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_JAPANESE = 105,/* Jpan */
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_LANNA = 106,/* Lana */
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_LYCIAN = 107,/* Lyci */
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_LYDIAN = 108,/* Lydi */
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_OL_CHIKI = 109,/* Olck */
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_REJANG = 110,/* Rjng */
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_SAURASHTRA = 111,/* Saur */
|
||||
/** Sutton SignWriting @stable ICU 3.8 */
|
||||
USCRIPT_SIGN_WRITING = 112,/* Sgnw */
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_SUNDANESE = 113,/* Sund */
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_MOON = 114,/* Moon */
|
||||
/** @stable ICU 3.8 */
|
||||
USCRIPT_MEITEI_MAYEK = 115,/* Mtei */
|
||||
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_IMPERIAL_ARAMAIC = 116,/* Armi */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_AVESTAN = 117,/* Avst */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_CHAKMA = 118,/* Cakm */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_KOREAN = 119,/* Kore */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_KAITHI = 120,/* Kthi */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_MANICHAEAN = 121,/* Mani */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_INSCRIPTIONAL_PAHLAVI = 122,/* Phli */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_PSALTER_PAHLAVI = 123,/* Phlp */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_BOOK_PAHLAVI = 124,/* Phlv */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_INSCRIPTIONAL_PARTHIAN = 125,/* Prti */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_SAMARITAN = 126,/* Samr */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_TAI_VIET = 127,/* Tavt */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_MATHEMATICAL_NOTATION = 128,/* Zmth */
|
||||
/** @stable ICU 4.0 */
|
||||
USCRIPT_SYMBOLS = 129,/* Zsym */
|
||||
|
||||
/** @stable ICU 4.4 */
|
||||
USCRIPT_BAMUM = 130,/* Bamu */
|
||||
/** @stable ICU 4.4 */
|
||||
USCRIPT_LISU = 131,/* Lisu */
|
||||
/** @stable ICU 4.4 */
|
||||
USCRIPT_NAKHI_GEBA = 132,/* Nkgb */
|
||||
/** @stable ICU 4.4 */
|
||||
USCRIPT_OLD_SOUTH_ARABIAN = 133,/* Sarb */
|
||||
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_BASSA_VAH = 134,/* Bass */
|
||||
/** @stable ICU 54 */
|
||||
USCRIPT_DUPLOYAN = 135,/* Dupl */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_ELBASAN = 136,/* Elba */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_GRANTHA = 137,/* Gran */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_KPELLE = 138,/* Kpel */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_LOMA = 139,/* Loma */
|
||||
/** Mende Kikakui @stable ICU 4.6 */
|
||||
USCRIPT_MENDE = 140,/* Mend */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_MEROITIC_CURSIVE = 141,/* Merc */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_OLD_NORTH_ARABIAN = 142,/* Narb */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_NABATAEAN = 143,/* Nbat */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_PALMYRENE = 144,/* Palm */
|
||||
/** @stable ICU 54 */
|
||||
USCRIPT_KHUDAWADI = 145,/* Sind */
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_SINDHI = USCRIPT_KHUDAWADI,
|
||||
/** @stable ICU 4.6 */
|
||||
USCRIPT_WARANG_CITI = 146,/* Wara */
|
||||
|
||||
/** @stable ICU 4.8 */
|
||||
USCRIPT_AFAKA = 147,/* Afak */
|
||||
/** @stable ICU 4.8 */
|
||||
USCRIPT_JURCHEN = 148,/* Jurc */
|
||||
/** @stable ICU 4.8 */
|
||||
USCRIPT_MRO = 149,/* Mroo */
|
||||
/** @stable ICU 4.8 */
|
||||
USCRIPT_NUSHU = 150,/* Nshu */
|
||||
/** @stable ICU 4.8 */
|
||||
USCRIPT_SHARADA = 151,/* Shrd */
|
||||
/** @stable ICU 4.8 */
|
||||
USCRIPT_SORA_SOMPENG = 152,/* Sora */
|
||||
/** @stable ICU 4.8 */
|
||||
USCRIPT_TAKRI = 153,/* Takr */
|
||||
/** @stable ICU 4.8 */
|
||||
USCRIPT_TANGUT = 154,/* Tang */
|
||||
/** @stable ICU 4.8 */
|
||||
USCRIPT_WOLEAI = 155,/* Wole */
|
||||
|
||||
/** @stable ICU 49 */
|
||||
USCRIPT_ANATOLIAN_HIEROGLYPHS = 156,/* Hluw */
|
||||
/** @stable ICU 49 */
|
||||
USCRIPT_KHOJKI = 157,/* Khoj */
|
||||
/** @stable ICU 49 */
|
||||
USCRIPT_TIRHUTA = 158,/* Tirh */
|
||||
|
||||
/** @stable ICU 52 */
|
||||
USCRIPT_CAUCASIAN_ALBANIAN = 159,/* Aghb */
|
||||
/** @stable ICU 52 */
|
||||
USCRIPT_MAHAJANI = 160,/* Mahj */
|
||||
|
||||
/** @stable ICU 54 */
|
||||
USCRIPT_AHOM = 161,/* Ahom */
|
||||
/** @stable ICU 54 */
|
||||
USCRIPT_HATRAN = 162,/* Hatr */
|
||||
/** @stable ICU 54 */
|
||||
USCRIPT_MODI = 163,/* Modi */
|
||||
/** @stable ICU 54 */
|
||||
USCRIPT_MULTANI = 164,/* Mult */
|
||||
/** @stable ICU 54 */
|
||||
USCRIPT_PAU_CIN_HAU = 165,/* Pauc */
|
||||
/** @stable ICU 54 */
|
||||
USCRIPT_SIDDHAM = 166,/* Sidd */
|
||||
|
||||
/** @stable ICU 58 */
|
||||
USCRIPT_ADLAM = 167,/* Adlm */
|
||||
/** @stable ICU 58 */
|
||||
USCRIPT_BHAIKSUKI = 168,/* Bhks */
|
||||
/** @stable ICU 58 */
|
||||
USCRIPT_MARCHEN = 169,/* Marc */
|
||||
/** @stable ICU 58 */
|
||||
USCRIPT_NEWA = 170,/* Newa */
|
||||
/** @stable ICU 58 */
|
||||
USCRIPT_OSAGE = 171,/* Osge */
|
||||
|
||||
/** @stable ICU 58 */
|
||||
USCRIPT_HAN_WITH_BOPOMOFO = 172,/* Hanb */
|
||||
/** @stable ICU 58 */
|
||||
USCRIPT_JAMO = 173,/* Jamo */
|
||||
/** @stable ICU 58 */
|
||||
USCRIPT_SYMBOLS_EMOJI = 174,/* Zsye */
|
||||
|
||||
/** @stable ICU 60 */
|
||||
USCRIPT_MASARAM_GONDI = 175,/* Gonm */
|
||||
/** @stable ICU 60 */
|
||||
USCRIPT_SOYOMBO = 176,/* Soyo */
|
||||
/** @stable ICU 60 */
|
||||
USCRIPT_ZANABAZAR_SQUARE = 177,/* Zanb */
|
||||
|
||||
/** @stable ICU 62 */
|
||||
USCRIPT_DOGRA = 178,/* Dogr */
|
||||
/** @stable ICU 62 */
|
||||
USCRIPT_GUNJALA_GONDI = 179,/* Gong */
|
||||
/** @stable ICU 62 */
|
||||
USCRIPT_MAKASAR = 180,/* Maka */
|
||||
/** @stable ICU 62 */
|
||||
USCRIPT_MEDEFAIDRIN = 181,/* Medf */
|
||||
/** @stable ICU 62 */
|
||||
USCRIPT_HANIFI_ROHINGYA = 182,/* Rohg */
|
||||
/** @stable ICU 62 */
|
||||
USCRIPT_SOGDIAN = 183,/* Sogd */
|
||||
/** @stable ICU 62 */
|
||||
USCRIPT_OLD_SOGDIAN = 184,/* Sogo */
|
||||
|
||||
/** @stable ICU 64 */
|
||||
USCRIPT_ELYMAIC = 185,/* Elym */
|
||||
/** @stable ICU 64 */
|
||||
USCRIPT_NYIAKENG_PUACHUE_HMONG = 186,/* Hmnp */
|
||||
/** @stable ICU 64 */
|
||||
USCRIPT_NANDINAGARI = 187,/* Nand */
|
||||
/** @stable ICU 64 */
|
||||
USCRIPT_WANCHO = 188,/* Wcho */
|
||||
|
||||
/** @stable ICU 66 */
|
||||
USCRIPT_CHORASMIAN = 189,/* Chrs */
|
||||
/** @stable ICU 66 */
|
||||
USCRIPT_DIVES_AKURU = 190,/* Diak */
|
||||
/** @stable ICU 66 */
|
||||
USCRIPT_KHITAN_SMALL_SCRIPT = 191,/* Kits */
|
||||
/** @stable ICU 66 */
|
||||
USCRIPT_YEZIDI = 192,/* Yezi */
|
||||
|
||||
/** @stable ICU 70 */
|
||||
USCRIPT_CYPRO_MINOAN = 193,/* Cpmn */
|
||||
/** @stable ICU 70 */
|
||||
USCRIPT_OLD_UYGHUR = 194,/* Ougr */
|
||||
/** @stable ICU 70 */
|
||||
USCRIPT_TANGSA = 195,/* Tnsa */
|
||||
/** @stable ICU 70 */
|
||||
USCRIPT_TOTO = 196,/* Toto */
|
||||
/** @stable ICU 70 */
|
||||
USCRIPT_VITHKUQI = 197,/* Vith */
|
||||
|
||||
/** @stable ICU 72 */
|
||||
USCRIPT_KAWI = 198,/* Kawi */
|
||||
/** @stable ICU 72 */
|
||||
USCRIPT_NAG_MUNDARI = 199,/* Nagm */
|
||||
} UScriptCode;
|
||||
|
||||
/**
|
||||
* Gets the script codes associated with the given locale or ISO 15924 abbreviation or name.
|
||||
* Fills in USCRIPT_MALAYALAM given "Malayam" OR "Mlym".
|
||||
* Fills in USCRIPT_LATIN given "en" OR "en_US"
|
||||
* If the required capacity is greater than the capacity of the destination buffer,
|
||||
* then the error code is set to U_BUFFER_OVERFLOW_ERROR and the required capacity is returned.
|
||||
*
|
||||
* <p>Note: To search by short or long script alias only, use
|
||||
* u_getPropertyValueEnum(UCHAR_SCRIPT, alias) instead. That does
|
||||
* a fast lookup with no access of the locale data.
|
||||
*
|
||||
* @param nameOrAbbrOrLocale name of the script, as given in
|
||||
* PropertyValueAliases.txt, or ISO 15924 code or locale
|
||||
* @param fillIn the UScriptCode buffer to fill in the script code
|
||||
* @param capacity the capacity (size) of UScriptCode buffer passed in.
|
||||
* @param err the error status code.
|
||||
* @return The number of script codes filled in the buffer passed in
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
uscript_getCode(const char* nameOrAbbrOrLocale,UScriptCode* fillIn,int32_t capacity,UErrorCode *err);
|
||||
|
||||
/**
|
||||
* Returns the long Unicode script name, if there is one.
|
||||
* Otherwise returns the 4-letter ISO 15924 script code.
|
||||
* Returns "Malayam" given USCRIPT_MALAYALAM.
|
||||
*
|
||||
* @param scriptCode UScriptCode enum
|
||||
* @return long script name as given in PropertyValueAliases.txt, or the 4-letter code,
|
||||
* or NULL if scriptCode is invalid
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI const char* U_EXPORT2
|
||||
uscript_getName(UScriptCode scriptCode);
|
||||
|
||||
/**
|
||||
* Returns the 4-letter ISO 15924 script code,
|
||||
* which is the same as the short Unicode script name if Unicode has names for the script.
|
||||
* Returns "Mlym" given USCRIPT_MALAYALAM.
|
||||
*
|
||||
* @param scriptCode UScriptCode enum
|
||||
* @return short script name (4-letter code), or NULL if scriptCode is invalid
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI const char* U_EXPORT2
|
||||
uscript_getShortName(UScriptCode scriptCode);
|
||||
|
||||
/**
|
||||
* Gets the script code associated with the given codepoint.
|
||||
* Returns USCRIPT_MALAYALAM given 0x0D02
|
||||
* @param codepoint UChar32 codepoint
|
||||
* @param err the error status code.
|
||||
* @return The UScriptCode, or 0 if codepoint is invalid
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI UScriptCode U_EXPORT2
|
||||
uscript_getScript(UChar32 codepoint, UErrorCode *err);
|
||||
|
||||
/**
|
||||
* Do the Script_Extensions of code point c contain script sc?
|
||||
* If c does not have explicit Script_Extensions, then this tests whether
|
||||
* c has the Script property value sc.
|
||||
*
|
||||
* Some characters are commonly used in multiple scripts.
|
||||
* For more information, see UAX #24: http://www.unicode.org/reports/tr24/.
|
||||
* @param c code point
|
||||
* @param sc script code
|
||||
* @return true if sc is in Script_Extensions(c)
|
||||
* @stable ICU 49
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
uscript_hasScript(UChar32 c, UScriptCode sc);
|
||||
|
||||
/**
|
||||
* Writes code point c's Script_Extensions as a list of UScriptCode values
|
||||
* to the output scripts array and returns the number of script codes.
|
||||
* - If c does have Script_Extensions, then the Script property value
|
||||
* (normally Common or Inherited) is not included.
|
||||
* - If c does not have Script_Extensions, then the one Script code is written to the output array.
|
||||
* - If c is not a valid code point, then the one USCRIPT_UNKNOWN code is written.
|
||||
* In other words, if the return value is 1,
|
||||
* then the output array contains exactly c's single Script code.
|
||||
* If the return value is n>=2, then the output array contains c's n Script_Extensions script codes.
|
||||
*
|
||||
* Some characters are commonly used in multiple scripts.
|
||||
* For more information, see UAX #24: http://www.unicode.org/reports/tr24/.
|
||||
*
|
||||
* If there are more than capacity script codes to be written, then
|
||||
* U_BUFFER_OVERFLOW_ERROR is set and the number of Script_Extensions is returned.
|
||||
* (Usual ICU buffer handling behavior.)
|
||||
*
|
||||
* @param c code point
|
||||
* @param scripts output script code array
|
||||
* @param capacity capacity of the scripts array
|
||||
* @param errorCode Standard ICU error code. Its input value must
|
||||
* pass the U_SUCCESS() test, or else the function returns
|
||||
* immediately. Check for U_FAILURE() on output or use with
|
||||
* function chaining. (See User Guide for details.)
|
||||
* @return number of script codes in c's Script_Extensions, or 1 for the single Script value,
|
||||
* written to scripts unless U_BUFFER_OVERFLOW_ERROR indicates insufficient capacity
|
||||
* @stable ICU 49
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
uscript_getScriptExtensions(UChar32 c,
|
||||
UScriptCode *scripts, int32_t capacity,
|
||||
UErrorCode *errorCode);
|
||||
|
||||
/**
|
||||
* Script usage constants.
|
||||
* See UAX #31 Unicode Identifier and Pattern Syntax.
|
||||
* http://www.unicode.org/reports/tr31/#Table_Candidate_Characters_for_Exclusion_from_Identifiers
|
||||
*
|
||||
* @stable ICU 51
|
||||
*/
|
||||
typedef enum UScriptUsage {
|
||||
/** Not encoded in Unicode. @stable ICU 51 */
|
||||
USCRIPT_USAGE_NOT_ENCODED,
|
||||
/** Unknown script usage. @stable ICU 51 */
|
||||
USCRIPT_USAGE_UNKNOWN,
|
||||
/** Candidate for Exclusion from Identifiers. @stable ICU 51 */
|
||||
USCRIPT_USAGE_EXCLUDED,
|
||||
/** Limited Use script. @stable ICU 51 */
|
||||
USCRIPT_USAGE_LIMITED_USE,
|
||||
/** Aspirational Use script. @stable ICU 51 */
|
||||
USCRIPT_USAGE_ASPIRATIONAL,
|
||||
/** Recommended script. @stable ICU 51 */
|
||||
USCRIPT_USAGE_RECOMMENDED
|
||||
} UScriptUsage;
|
||||
|
||||
/**
|
||||
* Writes the script sample character string.
|
||||
* This string normally consists of one code point but might be longer.
|
||||
* The string is empty if the script is not encoded.
|
||||
*
|
||||
* @param script script code
|
||||
* @param dest output string array
|
||||
* @param capacity number of UChars in the dest array
|
||||
* @param pErrorCode standard ICU in/out error code, must pass U_SUCCESS() on input
|
||||
* @return the string length, even if U_BUFFER_OVERFLOW_ERROR
|
||||
* @stable ICU 51
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
uscript_getSampleString(UScriptCode script, UChar *dest, int32_t capacity, UErrorCode *pErrorCode);
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
class UnicodeString;
|
||||
U_NAMESPACE_END
|
||||
|
||||
/**
|
||||
* Returns the script sample character string.
|
||||
* This string normally consists of one code point but might be longer.
|
||||
* The string is empty if the script is not encoded.
|
||||
*
|
||||
* @param script script code
|
||||
* @return the sample character string
|
||||
* @stable ICU 51
|
||||
*/
|
||||
U_COMMON_API icu::UnicodeString U_EXPORT2
|
||||
uscript_getSampleUnicodeString(UScriptCode script);
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Returns the script usage according to UAX #31 Unicode Identifier and Pattern Syntax.
|
||||
* Returns USCRIPT_USAGE_NOT_ENCODED if the script is not encoded in Unicode.
|
||||
*
|
||||
* @param script script code
|
||||
* @return script usage
|
||||
* @see UScriptUsage
|
||||
* @stable ICU 51
|
||||
*/
|
||||
U_CAPI UScriptUsage U_EXPORT2
|
||||
uscript_getUsage(UScriptCode script);
|
||||
|
||||
/**
|
||||
* Returns true if the script is written right-to-left.
|
||||
* For example, Arab and Hebr.
|
||||
*
|
||||
* @param script script code
|
||||
* @return true if the script is right-to-left
|
||||
* @stable ICU 51
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
uscript_isRightToLeft(UScriptCode script);
|
||||
|
||||
/**
|
||||
* Returns true if the script allows line breaks between letters (excluding hyphenation).
|
||||
* Such a script typically requires dictionary-based line breaking.
|
||||
* For example, Hani and Thai.
|
||||
*
|
||||
* @param script script code
|
||||
* @return true if the script allows line breaks between letters
|
||||
* @stable ICU 51
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
uscript_breaksBetweenLetters(UScriptCode script);
|
||||
|
||||
/**
|
||||
* Returns true if in modern (or most recent) usage of the script case distinctions are customary.
|
||||
* For example, Latn and Cyrl.
|
||||
*
|
||||
* @param script script code
|
||||
* @return true if the script is cased
|
||||
* @stable ICU 51
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
uscript_isCased(UScriptCode script);
|
||||
|
||||
#endif
|
||||
+517
@@ -0,0 +1,517 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
/*
|
||||
*******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2002-2014, International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*
|
||||
*******************************************************************************
|
||||
* file name: uset.h
|
||||
* encoding: UTF-8
|
||||
* tab size: 8 (not used)
|
||||
* indentation:4
|
||||
*
|
||||
* created on: 2002mar07
|
||||
* created by: Markus W. Scherer
|
||||
*
|
||||
* C version of UnicodeSet.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \file
|
||||
* \brief C API: Unicode Set
|
||||
*
|
||||
* <p>This is a C wrapper around the C++ UnicodeSet class.</p>
|
||||
*/
|
||||
|
||||
#ifndef __USET_H__
|
||||
#define __USET_H__
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/uchar.h"
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
#include "unicode/localpointer.h"
|
||||
#endif // U_SHOW_CPLUSPLUS_API
|
||||
|
||||
#ifndef USET_DEFINED
|
||||
|
||||
#ifndef U_IN_DOXYGEN
|
||||
#define USET_DEFINED
|
||||
#endif
|
||||
/**
|
||||
* USet is the C API type corresponding to C++ class UnicodeSet.
|
||||
* Use the uset_* API to manipulate. Create with
|
||||
* uset_open*, and destroy with uset_close.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
typedef struct USet USet;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Bitmask values to be passed to uset_openPatternOptions() or
|
||||
* uset_applyPattern() taking an option parameter.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
enum {
|
||||
/**
|
||||
* Ignore white space within patterns unless quoted or escaped.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
USET_IGNORE_SPACE = 1,
|
||||
|
||||
/**
|
||||
* Enable case insensitive matching. E.g., "[ab]" with this flag
|
||||
* will match 'a', 'A', 'b', and 'B'. "[^ab]" with this flag will
|
||||
* match all except 'a', 'A', 'b', and 'B'. This performs a full
|
||||
* closure over case mappings, e.g. U+017F for s.
|
||||
*
|
||||
* The resulting set is a superset of the input for the code points but
|
||||
* not for the strings.
|
||||
* It performs a case mapping closure of the code points and adds
|
||||
* full case folding strings for the code points, and reduces strings of
|
||||
* the original set to their full case folding equivalents.
|
||||
*
|
||||
* This is designed for case-insensitive matches, for example
|
||||
* in regular expressions. The full code point case closure allows checking of
|
||||
* an input character directly against the closure set.
|
||||
* Strings are matched by comparing the case-folded form from the closure
|
||||
* set with an incremental case folding of the string in question.
|
||||
*
|
||||
* The closure set will also contain single code points if the original
|
||||
* set contained case-equivalent strings (like U+00DF for "ss" or "Ss" etc.).
|
||||
* This is not necessary (that is, redundant) for the above matching method
|
||||
* but results in the same closure sets regardless of whether the original
|
||||
* set contained the code point or a string.
|
||||
*
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
USET_CASE_INSENSITIVE = 2,
|
||||
|
||||
/**
|
||||
* Enable case insensitive matching. E.g., "[ab]" with this flag
|
||||
* will match 'a', 'A', 'b', and 'B'. "[^ab]" with this flag will
|
||||
* match all except 'a', 'A', 'b', and 'B'. This adds the lower-,
|
||||
* title-, and uppercase mappings as well as the case folding
|
||||
* of each existing element in the set.
|
||||
* @stable ICU 3.2
|
||||
*/
|
||||
USET_ADD_CASE_MAPPINGS = 4
|
||||
};
|
||||
|
||||
/**
|
||||
* Argument values for whether span() and similar functions continue while
|
||||
* the current character is contained vs. not contained in the set.
|
||||
*
|
||||
* The functionality is straightforward for sets with only single code points,
|
||||
* without strings (which is the common case):
|
||||
* - USET_SPAN_CONTAINED and USET_SPAN_SIMPLE work the same.
|
||||
* - USET_SPAN_CONTAINED and USET_SPAN_SIMPLE are inverses of USET_SPAN_NOT_CONTAINED.
|
||||
* - span() and spanBack() partition any string the same way when
|
||||
* alternating between span(USET_SPAN_NOT_CONTAINED) and
|
||||
* span(either "contained" condition).
|
||||
* - Using a complemented (inverted) set and the opposite span conditions
|
||||
* yields the same results.
|
||||
*
|
||||
* When a set contains multi-code point strings, then these statements may not
|
||||
* be true, depending on the strings in the set (for example, whether they
|
||||
* overlap with each other) and the string that is processed.
|
||||
* For a set with strings:
|
||||
* - The complement of the set contains the opposite set of code points,
|
||||
* but the same set of strings.
|
||||
* Therefore, complementing both the set and the span conditions
|
||||
* may yield different results.
|
||||
* - When starting spans at different positions in a string
|
||||
* (span(s, ...) vs. span(s+1, ...)) the ends of the spans may be different
|
||||
* because a set string may start before the later position.
|
||||
* - span(USET_SPAN_SIMPLE) may be shorter than
|
||||
* span(USET_SPAN_CONTAINED) because it will not recursively try
|
||||
* all possible paths.
|
||||
* For example, with a set which contains the three strings "xy", "xya" and "ax",
|
||||
* span("xyax", USET_SPAN_CONTAINED) will return 4 but
|
||||
* span("xyax", USET_SPAN_SIMPLE) will return 3.
|
||||
* span(USET_SPAN_SIMPLE) will never be longer than
|
||||
* span(USET_SPAN_CONTAINED).
|
||||
* - With either "contained" condition, span() and spanBack() may partition
|
||||
* a string in different ways.
|
||||
* For example, with a set which contains the two strings "ab" and "ba",
|
||||
* and when processing the string "aba",
|
||||
* span() will yield contained/not-contained boundaries of { 0, 2, 3 }
|
||||
* while spanBack() will yield boundaries of { 0, 1, 3 }.
|
||||
*
|
||||
* Note: If it is important to get the same boundaries whether iterating forward
|
||||
* or backward through a string, then either only span() should be used and
|
||||
* the boundaries cached for backward operation, or an ICU BreakIterator
|
||||
* could be used.
|
||||
*
|
||||
* Note: Unpaired surrogates are treated like surrogate code points.
|
||||
* Similarly, set strings match only on code point boundaries,
|
||||
* never in the middle of a surrogate pair.
|
||||
* Illegal UTF-8 sequences are treated like U+FFFD.
|
||||
* When processing UTF-8 strings, malformed set strings
|
||||
* (strings with unpaired surrogates which cannot be converted to UTF-8)
|
||||
* are ignored.
|
||||
*
|
||||
* @stable ICU 3.8
|
||||
*/
|
||||
typedef enum USetSpanCondition {
|
||||
/**
|
||||
* Continues a span() while there is no set element at the current position.
|
||||
* Increments by one code point at a time.
|
||||
* Stops before the first set element (character or string).
|
||||
* (For code points only, this is like while contains(current)==false).
|
||||
*
|
||||
* When span() returns, the substring between where it started and the position
|
||||
* it returned consists only of characters that are not in the set,
|
||||
* and none of its strings overlap with the span.
|
||||
*
|
||||
* @stable ICU 3.8
|
||||
*/
|
||||
USET_SPAN_NOT_CONTAINED = 0,
|
||||
/**
|
||||
* Spans the longest substring that is a concatenation of set elements (characters or strings).
|
||||
* (For characters only, this is like while contains(current)==true).
|
||||
*
|
||||
* When span() returns, the substring between where it started and the position
|
||||
* it returned consists only of set elements (characters or strings) that are in the set.
|
||||
*
|
||||
* If a set contains strings, then the span will be the longest substring for which there
|
||||
* exists at least one non-overlapping concatenation of set elements (characters or strings).
|
||||
* This is equivalent to a POSIX regular expression for <code>(OR of each set element)*</code>.
|
||||
* (Java/ICU/Perl regex stops at the first match of an OR.)
|
||||
*
|
||||
* @stable ICU 3.8
|
||||
*/
|
||||
USET_SPAN_CONTAINED = 1,
|
||||
/**
|
||||
* Continues a span() while there is a set element at the current position.
|
||||
* Increments by the longest matching element at each position.
|
||||
* (For characters only, this is like while contains(current)==true).
|
||||
*
|
||||
* When span() returns, the substring between where it started and the position
|
||||
* it returned consists only of set elements (characters or strings) that are in the set.
|
||||
*
|
||||
* If a set only contains single characters, then this is the same
|
||||
* as USET_SPAN_CONTAINED.
|
||||
*
|
||||
* If a set contains strings, then the span will be the longest substring
|
||||
* with a match at each position with the longest single set element (character or string).
|
||||
*
|
||||
* Use this span condition together with other longest-match algorithms,
|
||||
* such as ICU converters (ucnv_getUnicodeSet()).
|
||||
*
|
||||
* @stable ICU 3.8
|
||||
*/
|
||||
USET_SPAN_SIMPLE = 2,
|
||||
} USetSpanCondition;
|
||||
|
||||
enum {
|
||||
/**
|
||||
* Capacity of USerializedSet::staticArray.
|
||||
* Enough for any single-code point set.
|
||||
* Also provides padding for nice sizeof(USerializedSet).
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
USET_SERIALIZED_STATIC_ARRAY_CAPACITY=8
|
||||
};
|
||||
|
||||
/**
|
||||
* A serialized form of a Unicode set. Limited manipulations are
|
||||
* possible directly on a serialized set. See below.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
typedef struct USerializedSet {
|
||||
/**
|
||||
* The serialized Unicode Set.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
const uint16_t *array;
|
||||
/**
|
||||
* The length of the array that contains BMP characters.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
int32_t bmpLength;
|
||||
/**
|
||||
* The total length of the array.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
int32_t length;
|
||||
/**
|
||||
* A small buffer for the array to reduce memory allocations.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
uint16_t staticArray[USET_SERIALIZED_STATIC_ARRAY_CAPACITY];
|
||||
} USerializedSet;
|
||||
|
||||
/*********************************************************************
|
||||
* USet API
|
||||
*********************************************************************/
|
||||
|
||||
/**
|
||||
* Creates a USet object that contains the range of characters
|
||||
* start..end, inclusive. If <code>start > end</code>
|
||||
* then an empty set is created (same as using uset_openEmpty()).
|
||||
* @param start first character of the range, inclusive
|
||||
* @param end last character of the range, inclusive
|
||||
* @return a newly created USet. The caller must call uset_close() on
|
||||
* it when done.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI USet* U_EXPORT2
|
||||
uset_open(UChar32 start, UChar32 end);
|
||||
|
||||
/**
|
||||
* Creates a set from the given pattern. See the UnicodeSet class
|
||||
* description for the syntax of the pattern language.
|
||||
* @param pattern a string specifying what characters are in the set
|
||||
* @param patternLength the length of the pattern, or -1 if null
|
||||
* terminated
|
||||
* @param ec the error code
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI USet* U_EXPORT2
|
||||
uset_openPattern(const UChar* pattern, int32_t patternLength,
|
||||
UErrorCode* ec);
|
||||
|
||||
/**
|
||||
* Creates a set from the given pattern. See the UnicodeSet class
|
||||
* description for the syntax of the pattern language.
|
||||
* @param pattern a string specifying what characters are in the set
|
||||
* @param patternLength the length of the pattern, or -1 if null
|
||||
* terminated
|
||||
* @param options bitmask for options to apply to the pattern.
|
||||
* Valid options are USET_IGNORE_SPACE and USET_CASE_INSENSITIVE.
|
||||
* @param ec the error code
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI USet* U_EXPORT2
|
||||
uset_openPatternOptions(const UChar* pattern, int32_t patternLength,
|
||||
uint32_t options,
|
||||
UErrorCode* ec);
|
||||
|
||||
/**
|
||||
* Disposes of the storage used by a USet object. This function should
|
||||
* be called exactly once for objects returned by uset_open().
|
||||
* @param set the object to dispose of
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
uset_close(USet* set);
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* \class LocalUSetPointer
|
||||
* "Smart pointer" class, closes a USet via uset_close().
|
||||
* For most methods see the LocalPointerBase base class.
|
||||
*
|
||||
* @see LocalPointerBase
|
||||
* @see LocalPointer
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_DEFINE_LOCAL_OPEN_POINTER(LocalUSetPointer, USet, uset_close);
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Returns a string representation of this set. If the result of
|
||||
* calling this function is passed to a uset_openPattern(), it
|
||||
* will produce another set that is equal to this one.
|
||||
* @param set the set
|
||||
* @param result the string to receive the rules, may be NULL
|
||||
* @param resultCapacity the capacity of result, may be 0 if result is NULL
|
||||
* @param escapeUnprintable if true then convert unprintable
|
||||
* character to their hex escape representations, \\uxxxx or
|
||||
* \\Uxxxxxxxx. Unprintable characters are those other than
|
||||
* U+000A, U+0020..U+007E.
|
||||
* @param ec error code.
|
||||
* @return length of string, possibly larger than resultCapacity
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
uset_toPattern(const USet* set,
|
||||
UChar* result, int32_t resultCapacity,
|
||||
UBool escapeUnprintable,
|
||||
UErrorCode* ec);
|
||||
|
||||
/**
|
||||
* Adds the given character to the given USet. After this call,
|
||||
* uset_contains(set, c) will return true.
|
||||
* A frozen set will not be modified.
|
||||
* @param set the object to which to add the character
|
||||
* @param c the character to add
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
uset_add(USet* set, UChar32 c);
|
||||
|
||||
/**
|
||||
* Adds the given string to the given USet. After this call,
|
||||
* uset_containsString(set, str, strLen) will return true.
|
||||
* A frozen set will not be modified.
|
||||
* @param set the object to which to add the character
|
||||
* @param str the string to add
|
||||
* @param strLen the length of the string or -1 if null terminated.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
uset_addString(USet* set, const UChar* str, int32_t strLen);
|
||||
|
||||
/**
|
||||
* Removes the given character from the given USet. After this call,
|
||||
* uset_contains(set, c) will return false.
|
||||
* A frozen set will not be modified.
|
||||
* @param set the object from which to remove the character
|
||||
* @param c the character to remove
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
uset_remove(USet* set, UChar32 c);
|
||||
|
||||
/**
|
||||
* Removes the given string to the given USet. After this call,
|
||||
* uset_containsString(set, str, strLen) will return false.
|
||||
* A frozen set will not be modified.
|
||||
* @param set the object to which to add the character
|
||||
* @param str the string to remove
|
||||
* @param strLen the length of the string or -1 if null terminated.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
uset_removeString(USet* set, const UChar* str, int32_t strLen);
|
||||
|
||||
/**
|
||||
* This is equivalent to
|
||||
* <code>uset_complementRange(set, 0, 0x10FFFF)</code>.
|
||||
*
|
||||
* <strong>Note:</strong> This performs a symmetric difference with all code points
|
||||
* <em>and thus retains all multicharacter strings</em>.
|
||||
* In order to achieve a “code point complement” (all code points minus this set),
|
||||
* the easiest is to <code>uset_complement(set); uset_removeAllStrings(set);</code>.
|
||||
*
|
||||
* A frozen set will not be modified.
|
||||
* @param set the set
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
uset_complement(USet* set);
|
||||
|
||||
/**
|
||||
* Removes all of the elements from this set. This set will be
|
||||
* empty after this call returns.
|
||||
* A frozen set will not be modified.
|
||||
* @param set the set
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
uset_clear(USet* set);
|
||||
|
||||
/**
|
||||
* Returns true if the given USet contains no characters and no
|
||||
* strings.
|
||||
* @param set the set
|
||||
* @return true if set is empty
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
uset_isEmpty(const USet* set);
|
||||
|
||||
/**
|
||||
* Returns true if the given USet contains the given character.
|
||||
* This function works faster with a frozen set.
|
||||
* @param set the set
|
||||
* @param c The codepoint to check for within the set
|
||||
* @return true if set contains c
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
uset_contains(const USet* set, UChar32 c);
|
||||
|
||||
/**
|
||||
* Returns true if the given USet contains the given string.
|
||||
* @param set the set
|
||||
* @param str the string
|
||||
* @param strLen the length of the string or -1 if null terminated.
|
||||
* @return true if set contains str
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
uset_containsString(const USet* set, const UChar* str, int32_t strLen);
|
||||
/**
|
||||
* Returns the number of characters and strings contained in this set.
|
||||
* The last (uset_getItemCount() - uset_getRangeCount()) items are strings.
|
||||
*
|
||||
* This is slower than uset_getRangeCount() and uset_getItemCount() because
|
||||
* it counts the code points of all ranges.
|
||||
*
|
||||
* @param set the set
|
||||
* @return a non-negative integer counting the characters and strings
|
||||
* contained in set
|
||||
* @stable ICU 2.4
|
||||
* @see uset_getRangeCount
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
uset_size(const USet* set);
|
||||
|
||||
/**
|
||||
* @param set the set
|
||||
* @return the number of ranges in this set.
|
||||
* @stable ICU 70
|
||||
* @see uset_getItemCount
|
||||
* @see uset_getItem
|
||||
* @see uset_size
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
uset_getRangeCount(const USet *set);
|
||||
|
||||
/**
|
||||
* Returns the number of items in this set. An item is either a range
|
||||
* of characters or a single multicharacter string.
|
||||
* @param set the set
|
||||
* @return a non-negative integer counting the character ranges
|
||||
* and/or strings contained in set
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
uset_getItemCount(const USet* set);
|
||||
|
||||
/**
|
||||
* Returns an item of this set. An item is either a range of
|
||||
* characters or a single multicharacter string (which can be the empty string).
|
||||
*
|
||||
* If <code>itemIndex</code> is less than uset_getRangeCount(), then this function returns 0,
|
||||
* and the range is <code>*start</code>..<code>*end</code>.
|
||||
*
|
||||
* If <code>itemIndex</code> is at least uset_getRangeCount() and less than uset_getItemCount(), then
|
||||
* this function copies the string into <code>str[strCapacity]</code> and
|
||||
* returns the length of the string (0 for the empty string).
|
||||
*
|
||||
* If <code>itemIndex</code> is out of range, then this function returns -1.
|
||||
*
|
||||
* Note that 0 is returned for each range as well as for the empty string.
|
||||
*
|
||||
* @param set the set
|
||||
* @param itemIndex a non-negative integer in the range 0..uset_getItemCount(set)-1
|
||||
* @param start pointer to variable to receive first character in range, inclusive;
|
||||
* can be NULL for a string item
|
||||
* @param end pointer to variable to receive last character in range, inclusive;
|
||||
* can be NULL for a string item
|
||||
* @param str buffer to receive the string, may be NULL
|
||||
* @param strCapacity capacity of str, or 0 if str is NULL
|
||||
* @param ec error code; U_INDEX_OUTOFBOUNDS_ERROR if the itemIndex is out of range
|
||||
* @return the length of the string (0 or >= 2), or 0 if the item is a range,
|
||||
* or -1 if the itemIndex is out of range
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
uset_getItem(const USet* set, int32_t itemIndex,
|
||||
UChar32* start, UChar32* end,
|
||||
UChar* str, int32_t strCapacity,
|
||||
UErrorCode* ec);
|
||||
#endif
|
||||
+494
@@ -0,0 +1,494 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (C) 1997-2011,2014-2015 International Business Machines
|
||||
* Corporation and others. All Rights Reserved.
|
||||
*******************************************************************************
|
||||
* Date Name Description
|
||||
* 06/21/00 aliu Creation.
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef UTRANS_H
|
||||
#define UTRANS_H
|
||||
|
||||
#include "unicode/utypes.h"
|
||||
|
||||
#if !UCONFIG_NO_TRANSLITERATION
|
||||
|
||||
#include "unicode/parseerr.h"
|
||||
#include "unicode/uenum.h"
|
||||
#include "unicode/uset.h"
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
#include "unicode/localpointer.h"
|
||||
#endif // U_SHOW_CPLUSPLUS_API
|
||||
|
||||
/********************************************************************
|
||||
* General Notes
|
||||
********************************************************************
|
||||
*/
|
||||
/**
|
||||
* \file
|
||||
* \brief C API: Transliterator
|
||||
*
|
||||
* <h2> Transliteration </h2>
|
||||
* The data structures and functions described in this header provide
|
||||
* transliteration services. Transliteration services are implemented
|
||||
* as C++ classes. The comments and documentation in this header
|
||||
* assume the reader is familiar with the C++ headers translit.h and
|
||||
* associated documentation.
|
||||
*
|
||||
* A significant but incomplete subset of the C++ transliteration
|
||||
* services are available to C code through this header. In order to
|
||||
* access more complex transliteration services, refer to the C++
|
||||
* headers and documentation.
|
||||
*
|
||||
* There are two sets of functions for working with transliterator IDs:
|
||||
*
|
||||
* An old, deprecated set uses char * IDs, which works for true and pure
|
||||
* identifiers that these APIs were designed for,
|
||||
* for example "Cyrillic-Latin".
|
||||
* It does not work when the ID contains filters ("[:Script=Cyrl:]")
|
||||
* or even a complete set of rules because then the ID string contains more
|
||||
* than just "invariant" characters (see utypes.h).
|
||||
*
|
||||
* A new set of functions replaces the old ones and uses UChar * IDs,
|
||||
* paralleling the UnicodeString IDs in the C++ API. (New in ICU 2.8.)
|
||||
*/
|
||||
|
||||
/********************************************************************
|
||||
* Data Structures
|
||||
********************************************************************/
|
||||
|
||||
/**
|
||||
* An opaque transliterator for use in C. Open with utrans_openxxx()
|
||||
* and close with utrans_close() when done. Equivalent to the C++ class
|
||||
* Transliterator and its subclasses.
|
||||
* @see Transliterator
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
typedef void* UTransliterator;
|
||||
|
||||
/**
|
||||
* Direction constant indicating the direction in a transliterator,
|
||||
* e.g., the forward or reverse rules of a RuleBasedTransliterator.
|
||||
* Specified when a transliterator is opened. An "A-B" transliterator
|
||||
* transliterates A to B when operating in the forward direction, and
|
||||
* B to A when operating in the reverse direction.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
typedef enum UTransDirection {
|
||||
|
||||
/**
|
||||
* UTRANS_FORWARD means from <source> to <target> for a
|
||||
* transliterator with ID <source>-<target>. For a transliterator
|
||||
* opened using a rule, it means forward direction rules, e.g.,
|
||||
* "A > B".
|
||||
*/
|
||||
UTRANS_FORWARD,
|
||||
|
||||
/**
|
||||
* UTRANS_REVERSE means from <target> to <source> for a
|
||||
* transliterator with ID <source>-<target>. For a transliterator
|
||||
* opened using a rule, it means reverse direction rules, e.g.,
|
||||
* "A < B".
|
||||
*/
|
||||
UTRANS_REVERSE
|
||||
|
||||
} UTransDirection;
|
||||
|
||||
/**
|
||||
* Position structure for utrans_transIncremental() incremental
|
||||
* transliteration. This structure defines two substrings of the text
|
||||
* being transliterated. The first region, [contextStart,
|
||||
* contextLimit), defines what characters the transliterator will read
|
||||
* as context. The second region, [start, limit), defines what
|
||||
* characters will actually be transliterated. The second region
|
||||
* should be a subset of the first.
|
||||
*
|
||||
* <p>After a transliteration operation, some of the indices in this
|
||||
* structure will be modified. See the field descriptions for
|
||||
* details.
|
||||
*
|
||||
* <p>contextStart <= start <= limit <= contextLimit
|
||||
*
|
||||
* <p>Note: All index values in this structure must be at code point
|
||||
* boundaries. That is, none of them may occur between two code units
|
||||
* of a surrogate pair. If any index does split a surrogate pair,
|
||||
* results are unspecified.
|
||||
*
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
typedef struct UTransPosition {
|
||||
|
||||
/**
|
||||
* Beginning index, inclusive, of the context to be considered for
|
||||
* a transliteration operation. The transliterator will ignore
|
||||
* anything before this index. INPUT/OUTPUT parameter: This parameter
|
||||
* is updated by a transliteration operation to reflect the maximum
|
||||
* amount of antecontext needed by a transliterator.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
int32_t contextStart;
|
||||
|
||||
/**
|
||||
* Ending index, exclusive, of the context to be considered for a
|
||||
* transliteration operation. The transliterator will ignore
|
||||
* anything at or after this index. INPUT/OUTPUT parameter: This
|
||||
* parameter is updated to reflect changes in the length of the
|
||||
* text, but points to the same logical position in the text.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
int32_t contextLimit;
|
||||
|
||||
/**
|
||||
* Beginning index, inclusive, of the text to be transliterated.
|
||||
* INPUT/OUTPUT parameter: This parameter is advanced past
|
||||
* characters that have already been transliterated by a
|
||||
* transliteration operation.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
int32_t start;
|
||||
|
||||
/**
|
||||
* Ending index, exclusive, of the text to be transliterated.
|
||||
* INPUT/OUTPUT parameter: This parameter is updated to reflect
|
||||
* changes in the length of the text, but points to the same
|
||||
* logical position in the text.
|
||||
* @stable ICU 2.4
|
||||
*/
|
||||
int32_t limit;
|
||||
|
||||
} UTransPosition;
|
||||
|
||||
/********************************************************************
|
||||
* General API
|
||||
********************************************************************/
|
||||
|
||||
/**
|
||||
* Open a custom transliterator, given a custom rules string
|
||||
* OR
|
||||
* a system transliterator, given its ID.
|
||||
* Any non-NULL result from this function should later be closed with
|
||||
* utrans_close().
|
||||
*
|
||||
* @param id a valid transliterator ID
|
||||
* @param idLength the length of the ID string, or -1 if NUL-terminated
|
||||
* @param dir the desired direction
|
||||
* @param rules the transliterator rules. See the C++ header rbt.h for
|
||||
* rules syntax. If NULL then a system transliterator matching
|
||||
* the ID is returned.
|
||||
* @param rulesLength the length of the rules, or -1 if the rules
|
||||
* are NUL-terminated.
|
||||
* @param parseError a pointer to a UParseError struct to receive the details
|
||||
* of any parsing errors. This parameter may be NULL if no
|
||||
* parsing error details are desired.
|
||||
* @param pErrorCode a pointer to the UErrorCode
|
||||
* @return a transliterator pointer that may be passed to other
|
||||
* utrans_xxx() functions, or NULL if the open call fails.
|
||||
* @stable ICU 2.8
|
||||
*/
|
||||
U_CAPI UTransliterator* U_EXPORT2
|
||||
utrans_openU(const UChar *id,
|
||||
int32_t idLength,
|
||||
UTransDirection dir,
|
||||
const UChar *rules,
|
||||
int32_t rulesLength,
|
||||
UParseError *parseError,
|
||||
UErrorCode *pErrorCode);
|
||||
|
||||
/**
|
||||
* Open an inverse of an existing transliterator. For this to work,
|
||||
* the inverse must be registered with the system. For example, if
|
||||
* the Transliterator "A-B" is opened, and then its inverse is opened,
|
||||
* the result is the Transliterator "B-A", if such a transliterator is
|
||||
* registered with the system. Otherwise the result is NULL and a
|
||||
* failing UErrorCode is set. Any non-NULL result from this function
|
||||
* should later be closed with utrans_close().
|
||||
*
|
||||
* @param trans the transliterator to open the inverse of.
|
||||
* @param status a pointer to the UErrorCode
|
||||
* @return a pointer to a newly-opened transliterator that is the
|
||||
* inverse of trans, or NULL if the open call fails.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI UTransliterator* U_EXPORT2
|
||||
utrans_openInverse(const UTransliterator* trans,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Create a copy of a transliterator. Any non-NULL result from this
|
||||
* function should later be closed with utrans_close().
|
||||
*
|
||||
* @param trans the transliterator to be copied.
|
||||
* @param status a pointer to the UErrorCode
|
||||
* @return a transliterator pointer that may be passed to other
|
||||
* utrans_xxx() functions, or NULL if the clone call fails.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI UTransliterator* U_EXPORT2
|
||||
utrans_clone(const UTransliterator* trans,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Close a transliterator. Any non-NULL pointer returned by
|
||||
* utrans_openXxx() or utrans_clone() should eventually be closed.
|
||||
* @param trans the transliterator to be closed.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
utrans_close(UTransliterator* trans);
|
||||
|
||||
#if U_SHOW_CPLUSPLUS_API
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
/**
|
||||
* \class LocalUTransliteratorPointer
|
||||
* "Smart pointer" class, closes a UTransliterator via utrans_close().
|
||||
* For most methods see the LocalPointerBase base class.
|
||||
*
|
||||
* @see LocalPointerBase
|
||||
* @see LocalPointer
|
||||
* @stable ICU 4.4
|
||||
*/
|
||||
U_DEFINE_LOCAL_OPEN_POINTER(LocalUTransliteratorPointer, UTransliterator, utrans_close);
|
||||
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Return the programmatic identifier for this transliterator.
|
||||
* If this identifier is passed to utrans_openU(), it will open
|
||||
* a transliterator equivalent to this one, if the ID has been
|
||||
* registered.
|
||||
*
|
||||
* @param trans the transliterator to return the ID of.
|
||||
* @param resultLength pointer to an output variable receiving the length
|
||||
* of the ID string; can be NULL
|
||||
* @return the NUL-terminated ID string. This pointer remains
|
||||
* valid until utrans_close() is called on this transliterator.
|
||||
*
|
||||
* @stable ICU 2.8
|
||||
*/
|
||||
U_CAPI const UChar * U_EXPORT2
|
||||
utrans_getUnicodeID(const UTransliterator *trans,
|
||||
int32_t *resultLength);
|
||||
|
||||
/**
|
||||
* Register an open transliterator with the system. When
|
||||
* utrans_open() is called with an ID string that is equal to that
|
||||
* returned by utrans_getID(adoptedTrans,...), then
|
||||
* utrans_clone(adoptedTrans,...) is returned.
|
||||
*
|
||||
* <p>NOTE: After this call the system owns the adoptedTrans and will
|
||||
* close it. The user must not call utrans_close() on adoptedTrans.
|
||||
*
|
||||
* @param adoptedTrans a transliterator, typically the result of
|
||||
* utrans_openRules(), to be registered with the system.
|
||||
* @param status a pointer to the UErrorCode
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
utrans_register(UTransliterator* adoptedTrans,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Unregister a transliterator from the system. After this call the
|
||||
* system will no longer recognize the given ID when passed to
|
||||
* utrans_open(). If the ID is invalid then nothing is done.
|
||||
*
|
||||
* @param id an ID to unregister
|
||||
* @param idLength the length of id, or -1 if id is zero-terminated
|
||||
* @stable ICU 2.8
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
utrans_unregisterID(const UChar* id, int32_t idLength);
|
||||
|
||||
/**
|
||||
* Set the filter used by a transliterator. A filter can be used to
|
||||
* make the transliterator pass certain characters through untouched.
|
||||
* The filter is expressed using a UnicodeSet pattern. If the
|
||||
* filterPattern is NULL or the empty string, then the transliterator
|
||||
* will be reset to use no filter.
|
||||
*
|
||||
* @param trans the transliterator
|
||||
* @param filterPattern a pattern string, in the form accepted by
|
||||
* UnicodeSet, specifying which characters to apply the
|
||||
* transliteration to. May be NULL or the empty string to indicate no
|
||||
* filter.
|
||||
* @param filterPatternLen the length of filterPattern, or -1 if
|
||||
* filterPattern is zero-terminated
|
||||
* @param status a pointer to the UErrorCode
|
||||
* @see UnicodeSet
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
utrans_setFilter(UTransliterator* trans,
|
||||
const UChar* filterPattern,
|
||||
int32_t filterPatternLen,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Return the number of system transliterators.
|
||||
* It is recommended to use utrans_openIDs() instead.
|
||||
*
|
||||
* @return the number of system transliterators.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
utrans_countAvailableIDs(void);
|
||||
|
||||
/**
|
||||
* Return a UEnumeration for the available transliterators.
|
||||
*
|
||||
* @param pErrorCode Pointer to the UErrorCode in/out parameter.
|
||||
* @return UEnumeration for the available transliterators.
|
||||
* Close with uenum_close().
|
||||
*
|
||||
* @stable ICU 2.8
|
||||
*/
|
||||
U_CAPI UEnumeration * U_EXPORT2
|
||||
utrans_openIDs(UErrorCode *pErrorCode);
|
||||
|
||||
/********************************************************************
|
||||
* Transliteration API
|
||||
********************************************************************/
|
||||
|
||||
/**
|
||||
* Transliterate a segment of a UChar* string. The string is passed
|
||||
* in in a UChar* buffer. The string is modified in place. If the
|
||||
* result is longer than textCapacity, it is truncated. The actual
|
||||
* length of the result is returned in *textLength, if textLength is
|
||||
* non-NULL. *textLength may be greater than textCapacity, but only
|
||||
* textCapacity UChars will be written to *text, including the zero
|
||||
* terminator.
|
||||
*
|
||||
* @param trans the transliterator
|
||||
* @param text a pointer to a buffer containing the text to be
|
||||
* transliterated on input and the result text on output.
|
||||
* @param textLength a pointer to the length of the string in text.
|
||||
* If the length is -1 then the string is assumed to be
|
||||
* zero-terminated. Upon return, the new length is stored in
|
||||
* *textLength. If textLength is NULL then the string is assumed to
|
||||
* be zero-terminated.
|
||||
* @param textCapacity the length of the text buffer
|
||||
* @param start the beginning index, inclusive; <code>0 <= start <=
|
||||
* limit</code>.
|
||||
* @param limit pointer to the ending index, exclusive; <code>start <=
|
||||
* limit <= repFunc->length(rep)</code>. Upon return, *limit will
|
||||
* contain the new limit index. The text previously occupying
|
||||
* <code>[start, limit)</code> has been transliterated, possibly to a
|
||||
* string of a different length, at <code>[start,
|
||||
* </code><em>new-limit</em><code>)</code>, where <em>new-limit</em>
|
||||
* is the return value.
|
||||
* @param status a pointer to the UErrorCode
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
utrans_transUChars(const UTransliterator* trans,
|
||||
UChar* text,
|
||||
int32_t* textLength,
|
||||
int32_t textCapacity,
|
||||
int32_t start,
|
||||
int32_t* limit,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Transliterate the portion of the UChar* text buffer that can be
|
||||
* transliterated unambiguously. See utrans_transIncremental(). The
|
||||
* string is passed in in a UChar* buffer. The string is modified in
|
||||
* place. If the result is longer than textCapacity, it is truncated.
|
||||
* The actual length of the result is returned in *textLength, if
|
||||
* textLength is non-NULL. *textLength may be greater than
|
||||
* textCapacity, but only textCapacity UChars will be written to
|
||||
* *text, including the zero terminator. See utrans_transIncremental()
|
||||
* for usage details.
|
||||
*
|
||||
* @param trans the transliterator
|
||||
* @param text a pointer to a buffer containing the text to be
|
||||
* transliterated on input and the result text on output.
|
||||
* @param textLength a pointer to the length of the string in text.
|
||||
* If the length is -1 then the string is assumed to be
|
||||
* zero-terminated. Upon return, the new length is stored in
|
||||
* *textLength. If textLength is NULL then the string is assumed to
|
||||
* be zero-terminated.
|
||||
* @param textCapacity the length of the text buffer
|
||||
* @param pos a struct containing the start and limit indices of the
|
||||
* text to be read and the text to be transliterated
|
||||
* @param status a pointer to the UErrorCode
|
||||
* @see utrans_transIncremental
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
utrans_transIncrementalUChars(const UTransliterator* trans,
|
||||
UChar* text,
|
||||
int32_t* textLength,
|
||||
int32_t textCapacity,
|
||||
UTransPosition* pos,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Create a rule string that can be passed to utrans_openU to recreate this
|
||||
* transliterator.
|
||||
*
|
||||
* @param trans The transliterator
|
||||
* @param escapeUnprintable if true then convert unprintable characters to their
|
||||
* hex escape representations, \\uxxxx or \\Uxxxxxxxx.
|
||||
* Unprintable characters are those other than
|
||||
* U+000A, U+0020..U+007E.
|
||||
* @param result A pointer to a buffer to receive the rules.
|
||||
* @param resultLength The maximum size of result.
|
||||
* @param status A pointer to the UErrorCode. In case of error status, the
|
||||
* contents of result are undefined.
|
||||
* @return int32_t The length of the rule string (may be greater than resultLength,
|
||||
* in which case an error is returned).
|
||||
* @stable ICU 53
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
utrans_toRules( const UTransliterator* trans,
|
||||
UBool escapeUnprintable,
|
||||
UChar* result, int32_t resultLength,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Returns the set of all characters that may be modified in the input text by
|
||||
* this UTransliterator, optionally ignoring the transliterator's current filter.
|
||||
* @param trans The transliterator.
|
||||
* @param ignoreFilter If false, the returned set incorporates the
|
||||
* UTransliterator's current filter; if the filter is changed,
|
||||
* the return value of this function will change. If true, the
|
||||
* returned set ignores the effect of the UTransliterator's
|
||||
* current filter.
|
||||
* @param fillIn Pointer to a USet object to receive the modifiable characters
|
||||
* set. Previous contents of fillIn are lost. <em>If fillIn is
|
||||
* NULL, then a new USet is created and returned. The caller
|
||||
* owns the result and must dispose of it by calling uset_close.</em>
|
||||
* @param status A pointer to the UErrorCode.
|
||||
* @return USet* Either fillIn, or if fillIn is NULL, a pointer to a
|
||||
* newly-allocated USet that the user must close. In case of
|
||||
* error, NULL is returned.
|
||||
* @stable ICU 53
|
||||
*/
|
||||
U_CAPI USet* U_EXPORT2
|
||||
utrans_getSourceSet(const UTransliterator* trans,
|
||||
UBool ignoreFilter,
|
||||
USet* fillIn,
|
||||
UErrorCode* status);
|
||||
|
||||
/* deprecated API ----------------------------------------------------------- */
|
||||
|
||||
#ifndef U_HIDE_DEPRECATED_API
|
||||
|
||||
/* see utrans.h documentation for why these functions are deprecated */
|
||||
|
||||
|
||||
|
||||
#endif /* U_HIDE_DEPRECATED_API */
|
||||
|
||||
#endif /* #if !UCONFIG_NO_TRANSLITERATION */
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user