1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru********************************************************************** 3b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* Copyright (C) 1999-2011, International Business Machines 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru********************************************************************** 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* file name: ustr_imp.h 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* encoding: US-ASCII 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* tab size: 8 (not used) 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* indentation:4 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* created on: 2001jan30 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* created by: Markus W. Scherer 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef __USTR_IMP_H__ 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define __USTR_IMP_H__ 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/uiter.h" 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "ucase.h" 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/** Simple declaration to avoid including unicode/ubrk.h. */ 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef UBRK_TYPEDEF_UBREAK_ITERATOR 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# define UBRK_TYPEDEF_UBREAK_ITERATOR 2550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho typedef struct UBreakIterator UBreakIterator; 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#ifndef U_COMPARE_IGNORE_CASE 2950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/* see also unorm.h */ 3050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 3150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Option bit for unorm_compare: 3250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Perform case-insensitive comparison. 3350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 3450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#define U_COMPARE_IGNORE_CASE 0x10000 3550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 3650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 3850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Internal option for unorm_cmpEquivFold() for strncmp style. 3950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * If set, checks for both string length and terminating NUL. 4050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 4150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#define _STRNCMP_STYLE 0x1000 4250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Compare two strings in code point order or code unit order. 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Works in strcmp style (both lengths -1), 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * strncmp style (lengths equal and >=0, flag TRUE), 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and memcmp/UnicodeString style (at least one length >=0). 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 49c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste QueruU_CFUNC int32_t U_EXPORT2 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruuprv_strCompare(const UChar *s1, int32_t length1, 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *s2, int32_t length2, 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool strncmpStyle, UBool codePointOrder); 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Internal API, used by u_strcasecmp() etc. 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Compare strings case-insensitively, 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * in code point order or code unit order. 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_CFUNC int32_t 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_strcmpFold(const UChar *s1, int32_t length1, 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *s2, int32_t length2, 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uint32_t options, 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *pErrorCode); 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Are the Unicode properties loaded? 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This must be used before internal functions are called that do 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * not perform this check. 6950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Generate a debug assertion failure if data is not loaded. 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_CFUNC UBool 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruuprv_haveProperties(UErrorCode *pErrorCode); 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Load the Unicode property data. 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Intended primarily for use from u_init(). 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Has no effect if property data is already loaded. 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * NOT thread safe. 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/*U_CFUNC int8_t 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruuprv_loadPropsData(UErrorCode *errorCode);*/ 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Internal string casing functions implementing 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ustring.h/ustrcase.c and UnicodeString case mapping functions. 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustruct UCaseMap { 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UCaseProps *csp; 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_BREAK_ITERATION 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBreakIterator *iter; /* We adopt the iterator, so we own it. */ 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char locale[32]; 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t locCache; 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uint32_t options; 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef __UCASEMAP_H__ 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef struct UCaseMap UCaseMap; 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 10283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#if UCONFIG_NO_BREAK_ITERATION 10383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius# define UCASEMAP_INITIALIZER { NULL, { 0 }, 0, 0 } 10483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#else 10583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius# define UCASEMAP_INITIALIZER { NULL, NULL, { 0 }, 0, 0 } 10683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 10883a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusU_CFUNC void 10983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusustrcase_setTempCaseMapLocale(UCaseMap *csm, const char *locale); 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 11183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#ifndef U_STRING_CASE_MAPPER_DEFINED 11283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define U_STRING_CASE_MAPPER_DEFINED 11383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 11483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/** 11583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * String case mapping function type, used by ustrcase_map(). 11683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * All error checking must be done. 11783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * The UCaseMap must be fully initialized, with locale and/or iter set as needed. 11883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * src and dest must not overlap. 11983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius */ 12083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliustypedef int32_t U_CALLCONV 12183a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusUStringCaseMapper(const UCaseMap *csm, 12283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UChar *dest, int32_t destCapacity, 12383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius const UChar *src, int32_t srcLength, 12483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UErrorCode *pErrorCode); 12583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 12683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif 12783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 12883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/** Implements UStringCaseMapper. */ 12983a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusU_CFUNC int32_t U_CALLCONV 13083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusustrcase_internalToLower(const UCaseMap *csm, 13183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UChar *dest, int32_t destCapacity, 13283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius const UChar *src, int32_t srcLength, 13383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UErrorCode *pErrorCode); 13483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 13583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/** Implements UStringCaseMapper. */ 13683a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusU_CFUNC int32_t U_CALLCONV 13783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusustrcase_internalToUpper(const UCaseMap *csm, 13883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UChar *dest, int32_t destCapacity, 13983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius const UChar *src, int32_t srcLength, 14083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UErrorCode *pErrorCode); 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_BREAK_ITERATION 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 14483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/** Implements UStringCaseMapper. */ 14583a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusU_CFUNC int32_t U_CALLCONV 14683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusustrcase_internalToTitle(const UCaseMap *csm, 14783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UChar *dest, int32_t destCapacity, 14883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius const UChar *src, int32_t srcLength, 14983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UErrorCode *pErrorCode); 15083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 15183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif 15283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 15383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/** Implements UStringCaseMapper. */ 15483a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusU_CFUNC int32_t U_CALLCONV 15583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusustrcase_internalFold(const UCaseMap *csm, 15683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UChar *dest, int32_t destCapacity, 15783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius const UChar *src, int32_t srcLength, 15883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UErrorCode *pErrorCode); 15983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 16083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/** 16183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * Implements argument checking and buffer handling 16283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * for string case mapping as a common function. 16383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius */ 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_CFUNC int32_t 16583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusustrcase_map(const UCaseMap *csm, 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar *dest, int32_t destCapacity, 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *src, int32_t srcLength, 16883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UStringCaseMapper *stringCaseMapper, 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *pErrorCode); 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 17183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/** 17283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * UTF-8 string case mapping function type, used by ucasemap_mapUTF8(). 17383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * UTF-8 version of UStringCaseMapper. 17483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * All error checking must be done. 17583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * The UCaseMap must be fully initialized, with locale and/or iter set as needed. 17683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * src and dest must not overlap. 17783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius */ 17883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliustypedef int32_t U_CALLCONV 17983a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusUTF8CaseMapper(const UCaseMap *csm, 18083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius uint8_t *dest, int32_t destCapacity, 18183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius const uint8_t *src, int32_t srcLength, 18283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UErrorCode *pErrorCode); 18383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 18483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/** Implements UTF8CaseMapper. */ 18583a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusU_CFUNC int32_t U_CALLCONV 18683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusucasemap_internalUTF8ToTitle(const UCaseMap *csm, 18783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius uint8_t *dest, int32_t destCapacity, 18883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius const uint8_t *src, int32_t srcLength, 18983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UErrorCode *pErrorCode); 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 19283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * Implements argument checking and buffer handling 19383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * for UTF-8 string case mapping as a common function. 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_CFUNC int32_t 19683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusucasemap_mapUTF8(const UCaseMap *csm, 19783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius uint8_t *dest, int32_t destCapacity, 19883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius const uint8_t *src, int32_t srcLength, 19983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UTF8CaseMapper *stringCaseMapper, 20083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius UErrorCode *pErrorCode); 20183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 20283a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusU_CAPI int32_t U_EXPORT2 20383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusustr_hashUCharsN(const UChar *str, int32_t length); 20483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 20583a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusU_CAPI int32_t U_EXPORT2 20683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusustr_hashCharsN(const char *str, int32_t length); 20783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius 20883a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusU_CAPI int32_t U_EXPORT2 20983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Corneliusustr_hashICharsN(const char *str, int32_t length); 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * NUL-terminate a UChar * string if possible. 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If length < destCapacity then NUL-terminate. 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If length == destCapacity then do not terminate but set U_STRING_NOT_TERMINATED_WARNING. 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If length > destCapacity then do not terminate but set U_BUFFER_OVERFLOW_ERROR. 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dest Destination buffer, can be NULL if destCapacity==0. 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param destCapacity Number of UChars available at dest. 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param length Number of UChars that were (to be) written to dest. 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pErrorCode ICU error code. 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return length 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_terminateUChars(UChar *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode); 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * NUL-terminate a char * string if possible. 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Same as u_terminateUChars() but for a different string type. 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_terminateChars(char *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode); 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * NUL-terminate a UChar32 * string if possible. 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Same as u_terminateUChars() but for a different string type. 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_terminateUChar32s(UChar32 *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode); 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * NUL-terminate a wchar_t * string if possible. 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Same as u_terminateUChars() but for a different string type. 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruu_terminateWChars(wchar_t *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode); 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 248