fontservices/textshaperplugin/IcuSource/common/unicode/ucasemap.h
changeset 0 1fb32624e06b
equal deleted inserted replaced
-1:000000000000 0:1fb32624e06b
       
     1 /*
       
     2 *******************************************************************************
       
     3 *
       
     4 *   Copyright (C) 2005, International Business Machines
       
     5 *   Corporation and others.  All Rights Reserved.
       
     6 *
       
     7 *******************************************************************************
       
     8 *   file name:  ucasemap.h
       
     9 *   encoding:   US-ASCII
       
    10 *   tab size:   8 (not used)
       
    11 *   indentation:4
       
    12 *
       
    13 *   created on: 2005may06
       
    14 *   created by: Markus W. Scherer
       
    15 *
       
    16 *   Case mapping service object and functions using it.
       
    17 */
       
    18 
       
    19 #ifndef __UCASEMAP_H__
       
    20 #define __UCASEMAP_H__
       
    21 
       
    22 #include "unicode/utypes.h"
       
    23 #include "unicode/ustring.h"
       
    24 
       
    25 /**
       
    26  * \file
       
    27  * \brief C API: Unicode case mapping functions using a UCaseMap service object.
       
    28  *
       
    29  * The service object takes care of memory allocations, data loading, and setup
       
    30  * for the attributes, as usual.
       
    31  *
       
    32  * Currently, the functionality provided here does not overlap with uchar.h
       
    33  * and ustring.h.
       
    34  *
       
    35  * ucasemap_utf8ToLower() and ucasemap_utf8ToUpper() operate directly on
       
    36  * UTF-8 strings.
       
    37  */
       
    38 
       
    39 /**
       
    40  * UCaseMap is an opaque service object for newer ICU case mapping functions.
       
    41  * Older functions did not use a service object.
       
    42  * @draft ICU 3.4
       
    43  */
       
    44 struct UCaseMap;
       
    45 typedef struct UCaseMap UCaseMap; /**< C typedef for struct UCaseMap. @draft ICU 3.4 */
       
    46 
       
    47 /**
       
    48  * Open a UCaseMap service object for a locale and a set of options.
       
    49  * The locale ID and options are preprocessed so that functions using the
       
    50  * service object need not process them in each call.
       
    51  *
       
    52  * @param locale ICU locale ID, used for language-dependent
       
    53  *               upper-/lower-/title-casing according to the Unicode standard.
       
    54  *               Usual semantics: ""=root, NULL=default locale, etc.
       
    55  * @param options Options bit set, used for case folding and string comparisons.
       
    56  *                Same flags as for u_foldCase(), u_strFoldCase(),
       
    57  *                u_strCaseCompare(), etc.
       
    58  *                Use 0 or U_FOLD_CASE_DEFAULT for default behavior.
       
    59  * @param pErrorCode Must be a valid pointer to an error code value,
       
    60  *                   which must not indicate a failure before the function call.
       
    61  * @return Pointer to a UCaseMap service object, if successful.
       
    62  *
       
    63  * @draft ICU 3.4
       
    64  */
       
    65 U_DRAFT UCaseMap * U_EXPORT2
       
    66 ucasemap_open(const char *locale, uint32_t options, UErrorCode *pErrorCode);
       
    67 
       
    68 /**
       
    69  * Close a UCaseMap service object.
       
    70  * @param csm Object to be closed.
       
    71  * @draft ICU 3.4
       
    72  */
       
    73 U_DRAFT void U_EXPORT2
       
    74 ucasemap_close(UCaseMap *csm);
       
    75 
       
    76 /**
       
    77  * Get the locale ID that is used for language-dependent case mappings.
       
    78  * @param csm UCaseMap service object.
       
    79  * @return locale ID
       
    80  * @draft ICU 3.4
       
    81  */
       
    82 U_DRAFT const char * U_EXPORT2
       
    83 ucasemap_getLocale(const UCaseMap *csm);
       
    84 
       
    85 /**
       
    86  * Get the options bit set that is used for case folding and string comparisons.
       
    87  * @param csm UCaseMap service object.
       
    88  * @return options bit set
       
    89  * @draft ICU 3.4
       
    90  */
       
    91 U_DRAFT uint32_t U_EXPORT2
       
    92 ucasemap_getOptions(const UCaseMap *csm);
       
    93 
       
    94 /**
       
    95  * Set the locale ID that is used for language-dependent case mappings.
       
    96  *
       
    97  * @param csm UCaseMap service object.
       
    98  * @param locale Locale ID, see ucasemap_open().
       
    99  * @param pErrorCode Must be a valid pointer to an error code value,
       
   100  *                   which must not indicate a failure before the function call.
       
   101  *
       
   102  * @see ucasemap_open
       
   103  * @draft ICU 3.4
       
   104  */
       
   105 U_DRAFT void U_EXPORT2
       
   106 ucasemap_setLocale(UCaseMap *csm, const char *locale, UErrorCode *pErrorCode);
       
   107 
       
   108 /**
       
   109  * Set the options bit set that is used for case folding and string comparisons.
       
   110  *
       
   111  * @param csm UCaseMap service object.
       
   112  * @param options Options bit set, see ucasemap_open().
       
   113  * @param pErrorCode Must be a valid pointer to an error code value,
       
   114  *                   which must not indicate a failure before the function call.
       
   115  *
       
   116  * @see ucasemap_open
       
   117  * @draft ICU 3.4
       
   118  */
       
   119 U_DRAFT void U_EXPORT2
       
   120 ucasemap_setOptions(UCaseMap *csm, uint32_t options, UErrorCode *pErrorCode);
       
   121 
       
   122 /**
       
   123  * Lowercase the characters in a UTF-8 string.
       
   124  * Casing is locale-dependent and context-sensitive.
       
   125  * The result may be longer or shorter than the original.
       
   126  * The source string and the destination buffer must not overlap.
       
   127  *
       
   128  * @param csm       UCaseMap service object.
       
   129  * @param dest      A buffer for the result string. The result will be NUL-terminated if
       
   130  *                  the buffer is large enough.
       
   131  *                  The contents is undefined in case of failure.
       
   132  * @param destCapacity The size of the buffer (number of bytes). If it is 0, then
       
   133  *                  dest may be NULL and the function will only return the length of the result
       
   134  *                  without writing any of the result string.
       
   135  * @param src       The original string
       
   136  * @param srcLength The length of the original string. If -1, then src must be NUL-terminated.
       
   137  * @param pErrorCode Must be a valid pointer to an error code value,
       
   138  *                  which must not indicate a failure before the function call.
       
   139  * @return The length of the result string, if successful - or in case of a buffer overflow,
       
   140  *         in which case it will be greater than destCapacity.
       
   141  *
       
   142  * @see u_strToLower
       
   143  * @draft ICU 3.4
       
   144  */
       
   145 U_DRAFT int32_t U_EXPORT2
       
   146 ucasemap_utf8ToLower(const UCaseMap *csm,
       
   147                      char *dest, int32_t destCapacity,
       
   148                      const char *src, int32_t srcLength,
       
   149                      UErrorCode *pErrorCode);
       
   150 
       
   151 /**
       
   152  * Uppercase the characters in a UTF-8 string.
       
   153  * Casing is locale-dependent and context-sensitive.
       
   154  * The result may be longer or shorter than the original.
       
   155  * The source string and the destination buffer must not overlap.
       
   156  *
       
   157  * @param csm       UCaseMap service object.
       
   158  * @param dest      A buffer for the result string. The result will be NUL-terminated if
       
   159  *                  the buffer is large enough.
       
   160  *                  The contents is undefined in case of failure.
       
   161  * @param destCapacity The size of the buffer (number of bytes). If it is 0, then
       
   162  *                  dest may be NULL and the function will only return the length of the result
       
   163  *                  without writing any of the result string.
       
   164  * @param src       The original string
       
   165  * @param srcLength The length of the original string. If -1, then src must be NUL-terminated.
       
   166  * @param pErrorCode Must be a valid pointer to an error code value,
       
   167  *                  which must not indicate a failure before the function call.
       
   168  * @return The length of the result string, if successful - or in case of a buffer overflow,
       
   169  *         in which case it will be greater than destCapacity.
       
   170  *
       
   171  * @see u_strToUpper
       
   172  * @draft ICU 3.4
       
   173  */
       
   174 U_DRAFT int32_t U_EXPORT2
       
   175 ucasemap_utf8ToUpper(const UCaseMap *csm,
       
   176                      char *dest, int32_t destCapacity,
       
   177                      const char *src, int32_t srcLength,
       
   178                      UErrorCode *pErrorCode);
       
   179 
       
   180 #endif