The classification functions are also generalized by the ISO C
standard. Instead of just allowing the two standard mappings, a
locale can contain others. Again, the localedef
program
already supports generating such locale data files.
This data type is defined as a scalar type which can hold a value
representing the locale-dependent character mapping. There is no way to
construct such a value apart from using the return value of the
wctrans
function.
This type is defined in wctype.h.
wctrans_t
wctrans (const char *property)
¶Preliminary: | MT-Safe locale | AS-Safe | AC-Safe | See POSIX Safety Concepts.
The wctrans
function has to be used to find out whether a named
mapping is defined in the current locale selected for the
LC_CTYPE
category. If the returned value is non-zero, you can use
it afterwards in calls to towctrans
. If the return value is
zero no such mapping is known in the current locale.
Beside locale-specific mappings there are two mappings which are guaranteed to be available in every locale:
"tolower" | "toupper" |
These functions are declared in wctype.h.
wint_t
towctrans (wint_t wc, wctrans_t desc)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
towctrans
maps the input character wc
according to the rules of the mapping for which desc is a
descriptor, and returns the value it finds. desc must be
obtained by a successful call to wctrans
.
This function is declared in wctype.h.
For the generally available mappings, the ISO C standard defines
convenient shortcuts so that it is not necessary to call wctrans
for them.
wint_t
towlower (wint_t wc)
¶Preliminary: | MT-Safe locale | AS-Safe | AC-Safe | See POSIX Safety Concepts.
If wc is an upper-case letter, towlower
returns the corresponding
lower-case letter. If wc is not an upper-case letter,
wc is returned unchanged.
towlower
can be implemented using
towctrans (wc, wctrans ("tolower"))
This function is declared in wctype.h.
wint_t
towupper (wint_t wc)
¶Preliminary: | MT-Safe locale | AS-Safe | AC-Safe | See POSIX Safety Concepts.
If wc is a lower-case letter, towupper
returns the corresponding
upper-case letter. Otherwise wc is returned unchanged.
towupper
can be implemented using
towctrans (wc, wctrans ("toupper"))
This function is declared in wctype.h.
The same warnings given in the last section for the use of the wide
character classification functions apply here. It is not possible to
simply cast a char
type value to a wint_t
and use it as an
argument to towctrans
calls.