From a9a31b1de5776a3b08a82101a4fa711294f0dd1d Mon Sep 17 00:00:00 2001 From: "Manuel A. Fernandez Montecelo" Date: Fri, 27 May 2016 14:28:30 +0100 Subject: Imported Upstream version 0.9.6+really0.9.3 --- doc/libunistring_13.html | 660 +++++++++++++++++++++++++++-------------------- 1 file changed, 382 insertions(+), 278 deletions(-) (limited to 'doc/libunistring_13.html') diff --git a/doc/libunistring_13.html b/doc/libunistring_13.html index ca81cf8..8b77910 100644 --- a/doc/libunistring_13.html +++ b/doc/libunistring_13.html @@ -1,6 +1,6 @@ - + -GNU libunistring: 13. Normalization forms (composition and decomposition) <uninorm.h> +GNU libunistring: 13. Case mappings <unicase.h> - - + + @@ -42,7 +42,7 @@ ul.toc {list-style: none} - + @@ -51,369 +51,446 @@ ul.toc {list-style: none} - +
[ << ]
[ << ] [ >> ]       [Top] [Contents][Index][Index] [ ? ]

- + -

13. Normalization forms (composition and decomposition) <uninorm.h>

+

13. Case mappings <unicase.h>

-

This include file defines functions for transforming Unicode strings to one -of the four normal forms, known as NFC, NFD, NKFC, NFKD. These -transformations involve decomposition and — for NFC and NFKC — composition -of Unicode characters. +

This include file defines functions for case mapping for Unicode strings and +case insensitive comparison of Unicode strings and C strings. +

+

These string functions fix the problems that were mentioned in +char *’ strings, namely, they handle the Croatian +LETTER DZ WITH CARON, the German LATIN SMALL LETTER SHARP S, the +Greek sigma and the Lithuanian i correctly.


- + -

13.1 Decomposition of Unicode characters

+

13.1 Case mappings of characters

-

The following enumerated values are the possible types of decomposition of a +

The following functions implement case mappings on Unicode characters — +for those cases only where the result of the mapping is a again a single Unicode character.

-
-
Constant: int UC_DECOMP_CANONICAL - -
-

Denotes canonical decomposition. -

+

These mappings are locale and context independent. +

+
+

WARNING! These functions are not sufficient for languages such as +German, Greek and Lithuanian. Better use the functions below that treat an +entire string at once and are language aware. +

-
Constant: int UC_DECOMP_FONT - +
Function: ucs4_t uc_toupper (ucs4_t uc) +
-

UCD marker: <font>. Denotes a font variant (e.g. a blackletter form). +

Returns the uppercase mapping of the Unicode character uc.

-
Constant: int UC_DECOMP_NOBREAK - +
Function: ucs4_t uc_tolower (ucs4_t uc) +
-

UCD marker: <noBreak>. -Denotes a no-break version of a space or hyphen. +

Returns the lowercase mapping of the Unicode character uc.

-
Constant: int UC_DECOMP_INITIAL - +
Function: ucs4_t uc_totitle (ucs4_t uc) +
-

UCD marker: <initial>. -Denotes an initial presentation form (Arabic). -

+

Returns the titlecase mapping of the Unicode character uc. +

+

The titlecase mapping of a character is to be used when the character should +look like upper case and the following characters are lower cased. +

+

For most characters, this is the same as the uppercase mapping. There are +only few characters where the title case variant and the uuper case variant +are different. These characters occur in the Latin writing of the Croatian, +Bosnian, and Serbian languages. +

+ + + + + + +

Lower case

Title case

Upper case +

LATIN SMALL LETTER LJ +

LATIN CAPITAL LETTER L WITH SMALL LETTER J +

LATIN CAPITAL LETTER LJ +

LATIN SMALL LETTER NJ +

LATIN CAPITAL LETTER N WITH SMALL LETTER J +

LATIN CAPITAL LETTER NJ +

LATIN SMALL LETTER DZ +

LATIN CAPITAL LETTER D WITH SMALL LETTER Z +

LATIN CAPITAL LETTER DZ +

LATIN SMALL LETTER DZ WITH CARON +

LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON +

LATIN CAPITAL LETTER DZ WITH CARON +

+
-
-
Constant: int UC_DECOMP_MEDIAL - -
-

UCD marker: <medial>. -Denotes a medial presentation form (Arabic). -

+
+ + +

13.2 Case mappings of strings

+

Case mapping should always be performed on entire strings, not on individual +characters. The functions in this sections do so. +

+

These functions allow to apply a normalization after the case mapping. The +reason is that if you want to treat ‘ä’ and ‘Ä’ the same, +you most often also want to treat the composed and decomposed forms of such +a character, U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS and +U+0041 LATIN CAPITAL LETTER A U+0308 COMBINING DIAERESIS the same. +The nf argument designates the normalization. +

+ +

These functions are locale dependent. The iso639_language argument +identifies the language (e.g. "tr" for Turkish). NULL means to use +locale independent case mappings. +

-
Constant: int UC_DECOMP_FINAL - +
Function: const char * uc_locale_language () +
-

UCD marker: <final>. -Denotes a final presentation form (Arabic). +

Returns the ISO 639 language code of the current locale. +Returns "" if it is unknown, or in the "C" locale.

-
Constant: int UC_DECOMP_ISOLATED - +
Function: uint8_t * u8_toupper (const uint8_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint8_t *resultbuf, size_t *lengthp) +
-

UCD marker: <isolated>. -Denotes an isolated presentation form (Arabic). -

- -
-
Constant: int UC_DECOMP_CIRCLE - +
Function: uint16_t * u16_toupper (const uint16_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint16_t *resultbuf, size_t *lengthp) +
-

UCD marker: <circle>. -Denotes an encircled form. -

- -
-
Constant: int UC_DECOMP_SUPER - +
Function: uint32_t * u32_toupper (const uint32_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint32_t *resultbuf, size_t *lengthp) +
-

UCD marker: <super>. -Denotes a superscript form. +

Returns the uppercase mapping of a string. +

+

The nf argument identifies the normalization form to apply after the +case-mapping. It can also be NULL, for no normalization.

-
Constant: int UC_DECOMP_SUB - +
Function: uint8_t * u8_tolower (const uint8_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint8_t *resultbuf, size_t *lengthp) +
-

UCD marker: <sub>. -Denotes a subscript form. -

- -
-
Constant: int UC_DECOMP_VERTICAL - +
Function: uint16_t * u16_tolower (const uint16_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint16_t *resultbuf, size_t *lengthp) +
-

UCD marker: <vertical>. -Denotes a vertical layout presentation form. -

- -
-
Constant: int UC_DECOMP_WIDE - +
Function: uint32_t * u32_tolower (const uint32_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint32_t *resultbuf, size_t *lengthp) +
-

UCD marker: <wide>. -Denotes a wide (or zenkaku) compatibility character. +

Returns the lowercase mapping of a string. +

+

The nf argument identifies the normalization form to apply after the +case-mapping. It can also be NULL, for no normalization.

-
Constant: int UC_DECOMP_NARROW - +
Function: uint8_t * u8_totitle (const uint8_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint8_t *resultbuf, size_t *lengthp) +
-

UCD marker: <narrow>. -Denotes a narrow (or hankaku) compatibility character. -

- -
-
Constant: int UC_DECOMP_SMALL - +
Function: uint16_t * u16_totitle (const uint16_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint16_t *resultbuf, size_t *lengthp) +
-

UCD marker: <small>. -Denotes a small variant form (CNS compatibility). -

- -
-
Constant: int UC_DECOMP_SQUARE - +
Function: uint32_t * u32_totitle (const uint32_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint32_t *resultbuf, size_t *lengthp) +
-

UCD marker: <square>. -Denotes a CJK squared font variant. +

Returns the titlecase mapping of a string. +

+

Mapping to title case means that, in each word, the first cased character +is being mapped to title case and the remaining characters of the word +are being mapped to lower case. +

+

The nf argument identifies the normalization form to apply after the +case-mapping. It can also be NULL, for no normalization.

+
+ + +

13.3 Case mappings of substrings

+ +

Case mapping of a substring cannot simply be performed by extracting the +substring and then applying the case mapping function to it. This does not +work because case mapping requires some information about the surrounding +characters. The following functions allow to apply case mappings to +substrings of a given string, while taking into account the characters that +precede it (the “prefix”) and the characters that follow it (the “suffix”). +

-
Constant: int UC_DECOMP_FRACTION - +
Type: casing_prefix_context_t +
-

UCD marker: <fraction>. -Denotes a vulgar fraction form. +

This data type denotes the case-mapping context that is given by a prefix +string. It is an immediate type that can be copied by simple assignment, +without involving memory allocation. It is not an array type.

-
Constant: int UC_DECOMP_COMPAT - +
Constant: casing_prefix_context_t unicase_empty_prefix_context +
-

UCD marker: <compat>. -Denotes an otherwise unspecified compatibility character. +

This constant is the case-mapping context that corresponds to an empty prefix +string.

-

The following constant denotes the maximum size of decomposition of a single -Unicode character. +

The following functions return casing_prefix_context_t objects:

-
Macro: unsigned int UC_DECOMPOSITION_MAX_LENGTH - +
Function: casing_prefix_context_t u8_casing_prefix_context (const uint8_t *s, size_t n) + +
+
Function: casing_prefix_context_t u16_casing_prefix_context (const uint16_t *s, size_t n) + +
+
Function: casing_prefix_context_t u32_casing_prefix_context (const uint32_t *s, size_t n) +
-

This macro expands to a constant that is the required size of buffer passed to -the uc_decomposition and uc_canonical_decomposition functions. +

Returns the case-mapping context of a given prefix string.

-

The following functions decompose a Unicode character. -

-
Function: int uc_decomposition (ucs4_t uc, int *decomp_tag, ucs4_t *decomposition) - +
Function: casing_prefix_context_t u8_casing_prefixes_context (const uint8_t *s, size_t n, casing_prefix_context_t a_context) +
-

Returns the character decomposition mapping of the Unicode character uc. -decomposition must point to an array of at least -UC_DECOMPOSITION_MAX_LENGTH ucs_t elements. -

-

When a decomposition exists, decomposition[0..n-1] and -*decomp_tag are filled and n is returned. Otherwise -1 is -returned. +

Function: casing_prefix_context_t u16_casing_prefixes_context (const uint16_t *s, size_t n, casing_prefix_context_t a_context) + +
+
Function: casing_prefix_context_t u32_casing_prefixes_context (const uint32_t *s, size_t n, casing_prefix_context_t a_context) + +
+

Returns the case-mapping context of the prefix concat(a, s), +given the case-mapping context of the prefix a.

-
Function: int uc_canonical_decomposition (ucs4_t uc, ucs4_t *decomposition) - +
Type: casing_suffix_context_t +
-

Returns the canonical character decomposition mapping of the Unicode character -uc. decomposition must point to an array of at least -UC_DECOMPOSITION_MAX_LENGTH ucs_t elements. -

-

When a decomposition exists, decomposition[0..n-1] is filled -and n is returned. Otherwise -1 is returned. +

This data type denotes the case-mapping context that is given by a suffix +string. It is an immediate type that can be copied by simple assignment, +without involving memory allocation. It is not an array type.

-
- - -

13.2 Composition of Unicode characters

- -

The following function composes a Unicode character from two Unicode -characters. -

-
Function: ucs4_t uc_composition (ucs4_t uc1, ucs4_t uc2) - +
Constant: casing_suffix_context_t unicase_empty_suffix_context +
-

Attempts to combine the Unicode characters uc1, uc2. -uc1 is known to have canonical combining class 0. -

-

Returns the combination of uc1 and uc2, if it exists. -Returns 0 otherwise. -

-

Not all decompositions can be recombined using this function. See the Unicode -file ‘CompositionExclusions.txt’ for details. +

This constant is the case-mapping context that corresponds to an empty suffix +string.

-
- - -

13.3 Normalization of strings

- -

The Unicode standard defines four normalization forms for Unicode strings. -The following type is used to denote a normalization form. +

The following functions return casing_suffix_context_t objects:

-
Type: uninorm_t - +
Function: casing_suffix_context_t u8_casing_suffix_context (const uint8_t *s, size_t n) +
-

An object of type uninorm_t denotes a Unicode normalization form. -This is a scalar type; its values can be compared with ==. +

Function: casing_suffix_context_t u16_casing_suffix_context (const uint16_t *s, size_t n) + +
+
Function: casing_suffix_context_t u32_casing_suffix_context (const uint32_t *s, size_t n) + +
+

Returns the case-mapping context of a given suffix string.

-

The following constants denote the four normalization forms. -

-
Macro: uninorm_t UNINORM_NFD - +
Function: casing_suffix_context_t u8_casing_suffixes_context (const uint8_t *s, size_t n, casing_suffix_context_t a_context) + +
+
Function: casing_suffix_context_t u16_casing_suffixes_context (const uint16_t *s, size_t n, casing_suffix_context_t a_context) +
-

Denotes Normalization form D: canonical decomposition. +

Function: casing_suffix_context_t u32_casing_suffixes_context (const uint32_t *s, size_t n, casing_suffix_context_t a_context) + +
+

Returns the case-mapping context of the suffix concat(s, a), +given the case-mapping context of the suffix a.

+

The following functions perform a case mapping, considering the +prefix context and the suffix context. +

-
Macro: uninorm_t UNINORM_NFC - +
Function: uint8_t * u8_ct_toupper (const uint8_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint8_t *resultbuf, size_t *lengthp) + +
+
Function: uint16_t * u16_ct_toupper (const uint16_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint16_t *resultbuf, size_t *lengthp) + +
+
Function: uint32_t * u32_ct_toupper (const uint32_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint32_t *resultbuf, size_t *lengthp) +
-

Normalization form C: canonical decomposition, then canonical composition. +

Returns the uppercase mapping of a string that is surrounded by a prefix +and a suffix.

-
Macro: uninorm_t UNINORM_NFKD - +
Function: uint8_t * u8_ct_tolower (const uint8_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint8_t *resultbuf, size_t *lengthp) +
-

Normalization form KD: compatibility decomposition. +

Function: uint16_t * u16_ct_tolower (const uint16_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint16_t *resultbuf, size_t *lengthp) + +
+
Function: uint32_t * u32_ct_tolower (const uint32_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint32_t *resultbuf, size_t *lengthp) + +
+

Returns the lowercase mapping of a string that is surrounded by a prefix +and a suffix.

-
Macro: uninorm_t UNINORM_NFKC - +
Function: uint8_t * u8_ct_totitle (const uint8_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint8_t *resultbuf, size_t *lengthp) + +
+
Function: uint16_t * u16_ct_totitle (const uint16_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint16_t *resultbuf, size_t *lengthp) +
-

Normalization form KC: compatibility decomposition, then canonical composition. +

Function: uint32_t * u32_ct_totitle (const uint32_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint32_t *resultbuf, size_t *lengthp) + +
+

Returns the titlecase mapping of a string that is surrounded by a prefix +and a suffix.

-

The following functions operate on uninorm_t objects. +

For example, to uppercase the UTF-8 substring between s + start_index +and s + end_index of a string that extends from s to +s + u8_strlen (s), you can use the statements

-
-
Function: bool uninorm_is_compat_decomposing (uninorm_t nf) - -
-

Tests whether the normalization form nf does compatibility decomposition. -

+
 
size_t result_length;
+uint8_t result =
+  u8_ct_toupper (s + start_index, end_index - start_index,
+                 u8_casing_prefix_context (s, start_index),
+                 u8_casing_suffix_context (s + end_index,
+                                           u8_strlen (s) - end_index),
+                 iso639_language, NULL, NULL, &result_length);
+
-
-
Function: bool uninorm_is_composing (uninorm_t nf) - -
-

Tests whether the normalization form nf includes canonical composition. -

+
+ + +

13.4 Case insensitive comparison

+

The following functions implement comparison that ignores differences in case +and normalization. +

-
Function: uninorm_t uninorm_decomposing_form (uninorm_t nf) - +
Function: uint8_t * u8_casefold (const uint8_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint8_t *resultbuf, size_t *lengthp) + +
+
Function: uint16_t * u16_casefold (const uint16_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint16_t *resultbuf, size_t *lengthp) +
-

Returns the decomposing variant of the normalization form nf. -This maps NFC,NFD → NFD and NFKC,NFKD → NFKD. +

Function: uint32_t * u32_casefold (const uint32_t *s, size_t n, const char *iso639_language, uninorm_t nf, uint32_t *resultbuf, size_t *lengthp) + +
+

Returns the case folded string. +

+

Comparing u8_casefold (s1) and u8_casefold (s2) +with the u8_cmp2 function is equivalent to comparing s1 and +s2 with u8_casecmp. +

+

The nf argument identifies the normalization form to apply after the +case-mapping. It can also be NULL, for no normalization.

-

The following functions apply a Unicode normalization form to a Unicode string. -

-
Function: uint8_t * u8_normalize (uninorm_t nf, const uint8_t *s, size_t n, uint8_t *resultbuf, size_t *lengthp) - +
Function: uint8_t * u8_ct_casefold (const uint8_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint8_t *resultbuf, size_t *lengthp) +
-
Function: uint16_t * u16_normalize (uninorm_t nf, const uint16_t *s, size_t n, uint16_t *resultbuf, size_t *lengthp) - +
Function: uint16_t * u16_ct_casefold (const uint16_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint16_t *resultbuf, size_t *lengthp) +
-
Function: uint32_t * u32_normalize (uninorm_t nf, const uint32_t *s, size_t n, uint32_t *resultbuf, size_t *lengthp) - +
Function: uint32_t * u32_ct_casefold (const uint32_t *s, size_t n, casing_prefix_context_t prefix_context, casing_suffix_context_t suffix_context, const char *iso639_language, uninorm_t nf, uint32_t *resultbuf, size_t *lengthp) +
-

Returns the specified normalization form of a string. +

Returns the case folded string. The case folding takes into account the +case mapping contexts of the prefix and suffix strings.

-
- - -

13.4 Normalizing comparisons

- -

The following functions compare Unicode string, ignoring differences in -normalization. -

-
Function: int u8_normcmp (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2, uninorm_t nf, int *resultp) - +
Function: int u8_casecmp (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2, const char *iso639_language, uninorm_t nf, int *resultp) + +
+
Function: int u16_casecmp (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2, const char *iso639_language, uninorm_t nf, int *resultp) +
-
Function: int u16_normcmp (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2, uninorm_t nf, int *resultp) - +
Function: int u32_casecmp (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2, const char *iso639_language, uninorm_t nf, int *resultp) +
-
Function: int u32_normcmp (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2, uninorm_t nf, int *resultp) - +
Function: int ulc_casecmp (const char *s1, size_t n1, const char *s2, size_t n2, const char *iso639_language, uninorm_t nf, int *resultp) +
-

Compares s1 and s2, ignoring differences in normalization. +

Compares s1 and s2, ignoring differences in case and normalization.

-

nf must be either UNINORM_NFD or UNINORM_NFKD. +

The nf argument identifies the normalization form to apply after the +case-mapping. It can also be NULL, for no normalization.

If successful, sets *resultp to -1 if s1 < s2, 0 if s1 = s2, 1 if s1 > s2, and returns 0. Upon failure, returns -1 with errno set.

- - + + + + +

The following functions additionally take into account the sorting rules of the +current locale. +

-
Function: char * u8_normxfrm (const uint8_t *s, size_t n, uninorm_t nf, char *resultbuf, size_t *lengthp) - +
Function: char * u8_casexfrm (const uint8_t *s, size_t n, const char *iso639_language, uninorm_t nf, char *resultbuf, size_t *lengthp) +
-
Function: char * u16_normxfrm (const uint16_t *s, size_t n, uninorm_t nf, char *resultbuf, size_t *lengthp) - +
Function: char * u16_casexfrm (const uint16_t *s, size_t n, const char *iso639_language, uninorm_t nf, char *resultbuf, size_t *lengthp) +
-
Function: char * u32_normxfrm (const uint32_t *s, size_t n, uninorm_t nf, char *resultbuf, size_t *lengthp) - +
Function: char * u32_casexfrm (const uint32_t *s, size_t n, const char *iso639_language, uninorm_t nf, char *resultbuf, size_t *lengthp) + +
+
Function: char * ulc_casexfrm (const char *s, size_t n, const char *iso639_language, uninorm_t nf, char *resultbuf, size_t *lengthp) +

Converts the string s of length n to a NUL-terminated byte -sequence, in such a way that comparing u8_normxfrm (s1) and -u8_normxfrm (s2) with the u8_cmp2 function is equivalent to -comparing s1 and s2 with the u8_normcoll function. +sequence, in such a way that comparing u8_casexfrm (s1) and +u8_casexfrm (s2) with the gnulib function memcmp2 is +equivalent to comparing s1 and s2 with u8_casecoll.

-

nf must be either UNINORM_NFC or UNINORM_NFKC. +

nf must be either UNINORM_NFC, UNINORM_NFKC, or NULL for +no normalization.

-
Function: int u8_normcoll (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2, uninorm_t nf, int *resultp) - +
Function: int u8_casecoll (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2, const char *iso639_language, uninorm_t nf, int *resultp) + +
+
Function: int u16_casecoll (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2, const char *iso639_language, uninorm_t nf, int *resultp) +
-
Function: int u16_normcoll (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2, uninorm_t nf, int *resultp) - +
Function: int u32_casecoll (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2, const char *iso639_language, uninorm_t nf, int *resultp) +
-
Function: int u32_normcoll (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2, uninorm_t nf, int *resultp) - +
Function: int ulc_casecoll (const char *s1, size_t n1, const char *s2, size_t n2, const char *iso639_language, uninorm_t nf, int *resultp) +
-

Compares s1 and s2, ignoring differences in normalization, using -the collation rules of the current locale. +

Compares s1 and s2, ignoring differences in case and normalization, +using the collation rules of the current locale.

-

nf must be either UNINORM_NFC or UNINORM_NFKC. +

The nf argument identifies the normalization form to apply after the +case-mapping. It must be either UNINORM_NFC or UNINORM_NFKC. +It can also be NULL, for no normalization.

If successful, sets *resultp to -1 if s1 < s2, 0 if s1 = s2, 1 if s1 > s2, and returns 0. @@ -421,66 +498,93 @@ Upon failure, returns -1 with errno set.


- + -

13.5 Normalization of streams of Unicode characters

+

13.5 Case detection

-

A “stream of Unicode characters” is essentially a function that accepts an -ucs4_t argument repeatedly, optionally combined with a function that -“flushes” the stream. +

The following functions determine whether a Unicode string is entirely in +upper case. or entirely in lower case, or entirely in title case, or already +case-folded.

-
Type: struct uninorm_filter - +
Function: int u8_is_uppercase (const uint8_t *s, size_t n, const char *iso639_language, bool *resultp) + +
+
Function: int u16_is_uppercase (const uint16_t *s, size_t n, const char *iso639_language, bool *resultp) + +
+
Function: int u32_is_uppercase (const uint32_t *s, size_t n, const char *iso639_language, bool *resultp) +
-

This is the data type of a stream of Unicode characters that normalizes its -input according to a given normalization form and passes the normalized -character sequence to the encapsulated stream of Unicode characters. +

Sets *resultp to true if mapping NFD(s) to upper case is +a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with +errno set.

-
Function: struct uninorm_filter * uninorm_filter_create (uninorm_t nf, int (*stream_func) (void *stream_data, ucs4_t uc), void *stream_data) - +
Function: int u8_is_lowercase (const uint8_t *s, size_t n, const char *iso639_language, bool *resultp) +
-

Creates and returns a normalization filter for Unicode characters. -

-

The pair (stream_func, stream_data) is the encapsulated stream. -stream_func (stream_data, uc) receives the Unicode -character uc and returns 0 if successful, or -1 with errno set -upon failure. -

-

Returns the new filter, or NULL with errno set upon failure. +

Function: int u16_is_lowercase (const uint16_t *s, size_t n, const char *iso639_language, bool *resultp) + +
+
Function: int u32_is_lowercase (const uint32_t *s, size_t n, const char *iso639_language, bool *resultp) + +
+

Sets *resultp to true if mapping NFD(s) to lower case is +a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with +errno set.

-
Function: int uninorm_filter_write (struct uninorm_filter *filter, ucs4_t uc) - +
Function: int u8_is_titlecase (const uint8_t *s, size_t n, const char *iso639_language, bool *resultp) + +
+
Function: int u16_is_titlecase (const uint16_t *s, size_t n, const char *iso639_language, bool *resultp) +
-

Stuffs a Unicode character into a normalizing filter. -Returns 0 if successful, or -1 with errno set upon failure. +

Function: int u32_is_titlecase (const uint32_t *s, size_t n, const char *iso639_language, bool *resultp) + +
+

Sets *resultp to true if mapping NFD(s) to title case is +a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with +errno set.

-
Function: int uninorm_filter_flush (struct uninorm_filter *filter) - +
Function: int u8_is_casefolded (const uint8_t *s, size_t n, const char *iso639_language, bool *resultp) +
-

Brings data buffered in the filter to its destination, the encapsulated stream. -

-

Returns 0 if successful, or -1 with errno set upon failure. -

-

Note! If after calling this function, additional characters are written -into the filter, the resulting character sequence in the encapsulated stream -will not necessarily be normalized. +

Function: int u16_is_casefolded (const uint16_t *s, size_t n, const char *iso639_language, bool *resultp) + +
+
Function: int u32_is_casefolded (const uint32_t *s, size_t n, const char *iso639_language, bool *resultp) + +
+

Sets *resultp to true if applying case folding to NFD(S) is +a no-op, or to false otherwise, and returns 0. Upon failure, returns -1 with +errno set.

+

The following functions determine whether case mappings have any effect on a +Unicode string. +

-
Function: int uninorm_filter_free (struct uninorm_filter *filter) - +
Function: int u8_is_cased (const uint8_t *s, size_t n, const char *iso639_language, bool *resultp) +
-

Brings data buffered in the filter to its destination, the encapsulated stream, -then closes and frees the filter. -

-

Returns 0 if successful, or -1 with errno set upon failure. +

Function: int u16_is_cased (const uint16_t *s, size_t n, const char *iso639_language, bool *resultp) + +
+
Function: int u32_is_cased (const uint32_t *s, size_t n, const char *iso639_language, bool *resultp) + +
+

Sets *resultp to true if case matters for s, that is, if +mapping NFD(s) to either upper case or lower case or title case is not +a no-op. Set *resultp to false if NFD(s) maps to itself +under the upper case mapping, under the lower case mapping, and under the title +case mapping; in other words, when NFD(s) consists entirely of caseless +characters. Upon failure, returns -1 with errno set.


@@ -493,12 +597,12 @@ then closes and frees the filter. - +
  [Top] [Contents][Index][Index] [ ? ]

- This document was generated by Daiki Ueno on July, 8 2015 using texi2html 1.78a. + This document was generated by Bruno Haible on March, 30 2010 using texi2html 1.78a.
-- cgit v1.2.3