Next: , Previous: , Up: Case mappings <unicase.h>   [Contents][Index]


14.4 Case insensitive comparison

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

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)
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 resultbuf and lengthp arguments are as described in chapter Conventions.

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_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_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 case folded string. The case folding takes into account the case mapping contexts of the prefix and suffix strings.

The resultbuf and lengthp arguments are as described in chapter Conventions.

The following functions ignore locale-dependent collation rules, but do use locale-dependent case mappings (if iso639_language is not NULL).

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 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 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 case and normalization.

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_casexfrm (const uint8_t *s, size_t n, const char *iso639_language, 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_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_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, UNINORM_NFKC, or NULL for no normalization.

The resultbuf and lengthp arguments are as described in chapter Conventions.

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 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 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 case and normalization, using the collation rules of the current locale.

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. Upon failure, returns -1 with errno set.


Next: Case detection, Previous: Case mappings of substrings, Up: Case mappings <unicase.h>   [Contents][Index]