// © 2017 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
// casemap.h
// created: 2017jan12 Markus W. Scherer
#ifndef __CASEMAP_H__
#define __CASEMAP_H__
#include "unicode/utypes.h"
#if U_SHOW_CPLUSPLUS_API
#include "unicode/stringpiece.h"
#include "unicode/uobject.h"
/**
* \ file
* \ brief C + + API : Low - level C + + case mapping functions .
*/
U_NAMESPACE_BEGIN
class BreakIterator;
class ByteSink;
class Edits;
/**
* Low - level C + + case mapping functions .
*
* @ stable ICU 59
*/
class U_COMMON_API CaseMap final :
public UMemory {
public :
/**
* Lowercases a UTF - 16 string and optionally records edits .
* Casing is locale - dependent and context - sensitive .
* The result may be longer or shorter than the original .
* The source string and the destination buffer must not overlap .
*
* @ param locale The locale ID . ( " " = root locale , nullptr = default locale . )
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET .
* @ param src The original string .
* @ param srcLength The length of the original string . If - 1 , then src must be NUL - terminated .
* @ param dest A buffer for the result string . The result will be NUL - terminated if
* the buffer is large enough .
* The contents is undefined in case of failure .
* @ param destCapacity The size of the buffer ( number of char16_ts ) . If it is 0 , then
* dest may be nullptr and the function will only return the length of the result
* without writing any of the result string .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
* @ return The length of the result string , if successful .
* When the result would be longer than destCapacity ,
* the full length is returned and a U_BUFFER_OVERFLOW_ERROR is set .
*
* @ see u_strToLower
* @ stable ICU 59
*/
static int32_t toLower(
const char *locale, uint32_t options,
const char16_t *src, int32_t srcLength,
char16_t *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode);
/**
* Uppercases a UTF - 16 string and optionally records edits .
* Casing is locale - dependent and context - sensitive .
* The result may be longer or shorter than the original .
* The source string and the destination buffer must not overlap .
*
* @ param locale The locale ID . ( " " = root locale , nullptr = default locale . )
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET .
* @ param src The original string .
* @ param srcLength The length of the original string . If - 1 , then src must be NUL - terminated .
* @ param dest A buffer for the result string . The result will be NUL - terminated if
* the buffer is large enough .
* The contents is undefined in case of failure .
* @ param destCapacity The size of the buffer ( number of char16_ts ) . If it is 0 , then
* dest may be nullptr and the function will only return the length of the result
* without writing any of the result string .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
* @ return The length of the result string , if successful .
* When the result would be longer than destCapacity ,
* the full length is returned and a U_BUFFER_OVERFLOW_ERROR is set .
*
* @ see u_strToUpper
* @ stable ICU 59
*/
static int32_t toUpper(
const char *locale, uint32_t options,
const char16_t *src, int32_t srcLength,
char16_t *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode);
#if !UCONFIG_NO_BREAK_ITERATION
/**
* Titlecases a UTF - 16 string and optionally records edits .
* Casing is locale - dependent and context - sensitive .
* The result may be longer or shorter than the original .
* The source string and the destination buffer must not overlap .
*
* Titlecasing uses a break iterator to find the first characters of words
* that are to be titlecased . It titlecases those characters and lowercases
* all others . ( This can be modified with options bits . )
*
* @ param locale The locale ID . ( " " = root locale , nullptr = default locale . )
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT , U_EDITS_NO_RESET ,
* U_TITLECASE_NO_LOWERCASE ,
* U_TITLECASE_NO_BREAK_ADJUSTMENT , U_TITLECASE_ADJUST_TO_CASED ,
* U_TITLECASE_WHOLE_STRING , U_TITLECASE_SENTENCES .
* @ param iter A break iterator to find the first characters of words that are to be titlecased .
* It is set to the source string ( setText ( ) )
* and used one or more times for iteration ( first ( ) and next ( ) ) .
* If nullptr , then a word break iterator for the locale is used
* ( or something equivalent ) .
* @ param src The original string .
* @ param srcLength The length of the original string . If - 1 , then src must be NUL - terminated .
* @ param dest A buffer for the result string . The result will be NUL - terminated if
* the buffer is large enough .
* The contents is undefined in case of failure .
* @ param destCapacity The size of the buffer ( number of char16_ts ) . If it is 0 , then
* dest may be nullptr and the function will only return the length of the result
* without writing any of the result string .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
* @ return The length of the result string , if successful .
* When the result would be longer than destCapacity ,
* the full length is returned and a U_BUFFER_OVERFLOW_ERROR is set .
*
* @ see u_strToTitle
* @ see ucasemap_toTitle
* @ stable ICU 59
*/
static int32_t toTitle(
const char *locale, uint32_t options, BreakIterator *iter,
const char16_t *src, int32_t srcLength,
char16_t *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode);
#endif // UCONFIG_NO_BREAK_ITERATION
/**
* Case - folds a UTF - 16 string and optionally records edits .
*
* Case folding is locale - independent and not context - sensitive ,
* but there is an option for whether to include or exclude mappings for dotted I
* and dotless i that are marked with ' T ' in CaseFolding . txt .
*
* The result may be longer or shorter than the original .
* The source string and the destination buffer must not overlap .
*
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT , U_EDITS_NO_RESET ,
* U_FOLD_CASE_DEFAULT , U_FOLD_CASE_EXCLUDE_SPECIAL_I .
* @ param src The original string .
* @ param srcLength The length of the original string . If - 1 , then src must be NUL - terminated .
* @ param dest A buffer for the result string . The result will be NUL - terminated if
* the buffer is large enough .
* The contents is undefined in case of failure .
* @ param destCapacity The size of the buffer ( number of char16_ts ) . If it is 0 , then
* dest may be nullptr and the function will only return the length of the result
* without writing any of the result string .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
* @ return The length of the result string , if successful .
* When the result would be longer than destCapacity ,
* the full length is returned and a U_BUFFER_OVERFLOW_ERROR is set .
*
* @ see u_strFoldCase
* @ stable ICU 59
*/
static int32_t fold(
uint32_t options,
const char16_t *src, int32_t srcLength,
char16_t *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode);
/**
* Lowercases a UTF - 8 string and optionally records edits .
* Casing is locale - dependent and context - sensitive .
* The result may be longer or shorter than the original .
*
* @ param locale The locale ID . ( " " = root locale , nullptr = default locale . )
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET .
* @ param src The original string .
* @ param sink A ByteSink to which the result string is written .
* sink . Flush ( ) is called at the end .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
*
* @ see ucasemap_utf8ToLower
* @ stable ICU 60
*/
static void utf8ToLower(
const char *locale, uint32_t options,
StringPiece src, ByteSink &sink, Edits *edits,
UErrorCode &errorCode);
/**
* Uppercases a UTF - 8 string and optionally records edits .
* Casing is locale - dependent and context - sensitive .
* The result may be longer or shorter than the original .
*
* @ param locale The locale ID . ( " " = root locale , nullptr = default locale . )
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET .
* @ param src The original string .
* @ param sink A ByteSink to which the result string is written .
* sink . Flush ( ) is called at the end .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
*
* @ see ucasemap_utf8ToUpper
* @ stable ICU 60
*/
static void utf8ToUpper(
const char *locale, uint32_t options,
StringPiece src, ByteSink &sink, Edits *edits,
UErrorCode &errorCode);
#if !UCONFIG_NO_BREAK_ITERATION
/**
* Titlecases a UTF - 8 string and optionally records edits .
* Casing is locale - dependent and context - sensitive .
* The result may be longer or shorter than the original .
*
* Titlecasing uses a break iterator to find the first characters of words
* that are to be titlecased . It titlecases those characters and lowercases
* all others . ( This can be modified with options bits . )
*
* @ param locale The locale ID . ( " " = root locale , nullptr = default locale . )
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT , U_EDITS_NO_RESET ,
* U_TITLECASE_NO_LOWERCASE ,
* U_TITLECASE_NO_BREAK_ADJUSTMENT , U_TITLECASE_ADJUST_TO_CASED ,
* U_TITLECASE_WHOLE_STRING , U_TITLECASE_SENTENCES .
* @ param iter A break iterator to find the first characters of words that are to be titlecased .
* It is set to the source string ( setUText ( ) )
* and used one or more times for iteration ( first ( ) and next ( ) ) .
* If nullptr , then a word break iterator for the locale is used
* ( or something equivalent ) .
* @ param src The original string .
* @ param sink A ByteSink to which the result string is written .
* sink . Flush ( ) is called at the end .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
*
* @ see ucasemap_utf8ToTitle
* @ stable ICU 60
*/
static void utf8ToTitle(
const char *locale, uint32_t options, BreakIterator *iter,
StringPiece src, ByteSink &sink, Edits *edits,
UErrorCode &errorCode);
#endif // UCONFIG_NO_BREAK_ITERATION
/**
* Case - folds a UTF - 8 string and optionally records edits .
*
* Case folding is locale - independent and not context - sensitive ,
* but there is an option for whether to include or exclude mappings for dotted I
* and dotless i that are marked with ' T ' in CaseFolding . txt .
*
* The result may be longer or shorter than the original .
*
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET .
* @ param src The original string .
* @ param sink A ByteSink to which the result string is written .
* sink . Flush ( ) is called at the end .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
*
* @ see ucasemap_utf8FoldCase
* @ stable ICU 60
*/
static void utf8Fold(
uint32_t options,
StringPiece src, ByteSink &sink, Edits *edits,
UErrorCode &errorCode);
/**
* Lowercases a UTF - 8 string and optionally records edits .
* Casing is locale - dependent and context - sensitive .
* The result may be longer or shorter than the original .
* The source string and the destination buffer must not overlap .
*
* @ param locale The locale ID . ( " " = root locale , nullptr = default locale . )
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET .
* @ param src The original string .
* @ param srcLength The length of the original string . If - 1 , then src must be NUL - terminated .
* @ param dest A buffer for the result string . The result will be NUL - terminated if
* the buffer is large enough .
* The contents is undefined in case of failure .
* @ param destCapacity The size of the buffer ( number of bytes ) . If it is 0 , then
* dest may be nullptr and the function will only return the length of the result
* without writing any of the result string .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
* @ return The length of the result string , if successful .
* When the result would be longer than destCapacity ,
* the full length is returned and a U_BUFFER_OVERFLOW_ERROR is set .
*
* @ see ucasemap_utf8ToLower
* @ stable ICU 59
*/
static int32_t utf8ToLower(
const char *locale, uint32_t options,
const char *src, int32_t srcLength,
char *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode);
/**
* Uppercases a UTF - 8 string and optionally records edits .
* Casing is locale - dependent and context - sensitive .
* The result may be longer or shorter than the original .
* The source string and the destination buffer must not overlap .
*
* @ param locale The locale ID . ( " " = root locale , nullptr = default locale . )
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET .
* @ param src The original string .
* @ param srcLength The length of the original string . If - 1 , then src must be NUL - terminated .
* @ param dest A buffer for the result string . The result will be NUL - terminated if
* the buffer is large enough .
* The contents is undefined in case of failure .
* @ param destCapacity The size of the buffer ( number of bytes ) . If it is 0 , then
* dest may be nullptr and the function will only return the length of the result
* without writing any of the result string .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
* @ return The length of the result string , if successful .
* When the result would be longer than destCapacity ,
* the full length is returned and a U_BUFFER_OVERFLOW_ERROR is set .
*
* @ see ucasemap_utf8ToUpper
* @ stable ICU 59
*/
static int32_t utf8ToUpper(
const char *locale, uint32_t options,
const char *src, int32_t srcLength,
char *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode);
#if !UCONFIG_NO_BREAK_ITERATION
/**
* Titlecases a UTF - 8 string and optionally records edits .
* Casing is locale - dependent and context - sensitive .
* The result may be longer or shorter than the original .
* The source string and the destination buffer must not overlap .
*
* Titlecasing uses a break iterator to find the first characters of words
* that are to be titlecased . It titlecases those characters and lowercases
* all others . ( This can be modified with options bits . )
*
* @ param locale The locale ID . ( " " = root locale , nullptr = default locale . )
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT , U_EDITS_NO_RESET ,
* U_TITLECASE_NO_LOWERCASE ,
* U_TITLECASE_NO_BREAK_ADJUSTMENT , U_TITLECASE_ADJUST_TO_CASED ,
* U_TITLECASE_WHOLE_STRING , U_TITLECASE_SENTENCES .
* @ param iter A break iterator to find the first characters of words that are to be titlecased .
* It is set to the source string ( setUText ( ) )
* and used one or more times for iteration ( first ( ) and next ( ) ) .
* If nullptr , then a word break iterator for the locale is used
* ( or something equivalent ) .
* @ param src The original string .
* @ param srcLength The length of the original string . If - 1 , then src must be NUL - terminated .
* @ param dest A buffer for the result string . The result will be NUL - terminated if
* the buffer is large enough .
* The contents is undefined in case of failure .
* @ param destCapacity The size of the buffer ( number of bytes ) . If it is 0 , then
* dest may be nullptr and the function will only return the length of the result
* without writing any of the result string .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
* @ return The length of the result string , if successful .
* When the result would be longer than destCapacity ,
* the full length is returned and a U_BUFFER_OVERFLOW_ERROR is set .
*
* @ see ucasemap_utf8ToTitle
* @ stable ICU 59
*/
static int32_t utf8ToTitle(
const char *locale, uint32_t options, BreakIterator *iter,
const char *src, int32_t srcLength,
char *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode);
#endif // UCONFIG_NO_BREAK_ITERATION
/**
* Case - folds a UTF - 8 string and optionally records edits .
*
* Case folding is locale - independent and not context - sensitive ,
* but there is an option for whether to include or exclude mappings for dotted I
* and dotless i that are marked with ' T ' in CaseFolding . txt .
*
* The result may be longer or shorter than the original .
* The source string and the destination buffer must not overlap .
*
* @ param options Options bit set , usually 0 . See U_OMIT_UNCHANGED_TEXT , U_EDITS_NO_RESET ,
* U_FOLD_CASE_DEFAULT , U_FOLD_CASE_EXCLUDE_SPECIAL_I .
* @ param src The original string .
* @ param srcLength The length of the original string . If - 1 , then src must be NUL - terminated .
* @ param dest A buffer for the result string . The result will be NUL - terminated if
* the buffer is large enough .
* The contents is undefined in case of failure .
* @ param destCapacity The size of the buffer ( number of bytes ) . If it is 0 , then
* dest may be nullptr and the function will only return the length of the result
* without writing any of the result string .
* @ param edits Records edits for index mapping , working with styled text ,
* and getting only changes ( if any ) .
* The Edits contents is undefined if any error occurs .
* This function calls edits - > reset ( ) first unless
* options includes U_EDITS_NO_RESET . edits can be nullptr .
* @ param errorCode Reference to an in / out error code value
* which must not indicate a failure before the function call .
* @ return The length of the result string , if successful .
* When the result would be longer than destCapacity ,
* the full length is returned and a U_BUFFER_OVERFLOW_ERROR is set .
*
* @ see ucasemap_utf8FoldCase
* @ stable ICU 59
*/
static int32_t utf8Fold(
uint32_t options,
const char *src, int32_t srcLength,
char *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode);
private :
CaseMap() =
delete ;
CaseMap(
const CaseMap &other) =
delete ;
CaseMap &
operator =(
const CaseMap &other) =
delete ;
};
U_NAMESPACE_END
#endif /* U_SHOW_CPLUSPLUS_API */
#endif // __CASEMAP_H__
Messung V0.5 in Prozent C=90 H=100 G=95
¤ Dauer der Verarbeitung: 0.24 Sekunden
(vorverarbeitet am 2026-08-26)
¤
*© Formatika GbR, Deutschland