00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
#ifndef USTRING_H
00017
#define USTRING_H
00018
00019
#include "unicode/utypes.h"
00020
#include "unicode/uiter.h"
00021
00023
#ifndef UBRK_TYPEDEF_UBREAK_ITERATOR
00024
# define UBRK_TYPEDEF_UBREAK_ITERATOR
00025 typedef void *
UBreakIterator;
00026
#endif
00027
00079
U_CAPI int32_t U_EXPORT2
00080
u_strlen(
const UChar *s);
00081
00095
U_CAPI int32_t U_EXPORT2
00096
u_countChar32(
const UChar *s, int32_t length);
00097
00116
U_CAPI UBool U_EXPORT2
00117
u_strHasMoreChar32Than(
const UChar *s, int32_t length, int32_t number);
00118
00129
U_CAPI UChar* U_EXPORT2
00130
u_strcat(
UChar *dst,
00131
const UChar *src);
00132
00147
U_CAPI UChar* U_EXPORT2
00148
u_strncat(
UChar *dst,
00149
const UChar *src,
00150 int32_t n);
00151
00172
U_CAPI UChar * U_EXPORT2
00173
u_strstr(
const UChar *s,
const UChar *substring);
00174
00196
U_CAPI UChar * U_EXPORT2
00197
u_strFindFirst(
const UChar *s, int32_t length,
const UChar *substring, int32_t subLength);
00198
00216
U_CAPI UChar * U_EXPORT2
00217
u_strchr(
const UChar *s,
UChar c);
00218
00236
U_CAPI UChar * U_EXPORT2
00237
u_strchr32(
const UChar *s,
UChar32 c);
00238
00259
U_CAPI UChar * U_EXPORT2
00260
u_strrstr(
const UChar *s,
const UChar *substring);
00261
00283
U_CAPI UChar * U_EXPORT2
00284
u_strFindLast(
const UChar *s, int32_t length,
const UChar *substring, int32_t subLength);
00285
00303
U_CAPI UChar * U_EXPORT2
00304
u_strrchr(
const UChar *s,
UChar c);
00305
00323
U_CAPI UChar * U_EXPORT2
00324
u_strrchr32(
const UChar *s,
UChar32 c);
00325
00338
U_CAPI UChar * U_EXPORT2
00339
u_strpbrk(
const UChar *string,
const UChar *matchSet);
00340
00354
U_CAPI int32_t U_EXPORT2
00355
u_strcspn(
const UChar *string,
const UChar *matchSet);
00356
00370
U_CAPI int32_t U_EXPORT2
00371
u_strspn(
const UChar *string,
const UChar *matchSet);
00372
00398
U_CAPI UChar * U_EXPORT2
00399
u_strtok_r(
UChar *src,
00400
const UChar *delim,
00401
UChar **saveState);
00402
00413
U_CAPI int32_t U_EXPORT2
00414
u_strcmp(
const UChar *s1,
00415
const UChar *s2);
00416
00428
U_CAPI int32_t U_EXPORT2
00429
u_strcmpCodePointOrder(
const UChar *s1,
const UChar *s2);
00430
00458
U_CAPI int32_t U_EXPORT2
00459
u_strCompare(
const UChar *s1, int32_t length1,
00460
const UChar *s2, int32_t length2,
00461
UBool codePointOrder);
00462
00483
U_CAPI int32_t U_EXPORT2
00484
u_strCompareIter(
UCharIterator *iter1,
UCharIterator *iter2,
UBool codePointOrder);
00485
00486
#ifndef U_COMPARE_CODE_POINT_ORDER
00487
00493 #define U_COMPARE_CODE_POINT_ORDER 0x8000
00494
#endif
00495
00536
U_CAPI int32_t U_EXPORT2
00537
u_strCaseCompare(
const UChar *s1, int32_t length1,
00538
const UChar *s2, int32_t length2,
00539 uint32_t options,
00540
UErrorCode *pErrorCode);
00541
00554
U_CAPI int32_t U_EXPORT2
00555
u_strncmp(
const UChar *ucs1,
00556
const UChar *ucs2,
00557 int32_t n);
00558
00572
U_CAPI int32_t U_EXPORT2
00573
u_strncmpCodePointOrder(
const UChar *s1,
const UChar *s2, int32_t n);
00574
00594
U_CAPI int32_t U_EXPORT2
00595
u_strcasecmp(
const UChar *s1,
const UChar *s2, uint32_t options);
00596
00618
U_CAPI int32_t U_EXPORT2
00619
u_strncasecmp(
const UChar *s1,
const UChar *s2, int32_t n, uint32_t options);
00620
00642
U_CAPI int32_t U_EXPORT2
00643
u_memcasecmp(
const UChar *s1,
const UChar *s2, int32_t length, uint32_t options);
00644
00653
U_CAPI UChar* U_EXPORT2
00654
u_strcpy(
UChar *dst,
00655
const UChar *src);
00656
00668
U_CAPI UChar* U_EXPORT2
00669
u_strncpy(
UChar *dst,
00670
const UChar *src,
00671 int32_t n);
00672
00683
U_CAPI UChar* U_EXPORT2
u_uastrcpy(
UChar *dst,
00684
const char *src );
00685
00698
U_CAPI UChar* U_EXPORT2
u_uastrncpy(
UChar *dst,
00699
const char *src,
00700 int32_t n);
00701
00712
U_CAPI char* U_EXPORT2
u_austrcpy(
char *dst,
00713
const UChar *src );
00714
00727
U_CAPI char* U_EXPORT2
u_austrncpy(
char *dst,
00728
const UChar *src,
00729 int32_t n );
00730
00739
U_CAPI UChar* U_EXPORT2
00740
u_memcpy(
UChar *dest,
const UChar *src, int32_t count);
00741
00750
U_CAPI UChar* U_EXPORT2
00751
u_memmove(
UChar *dest,
const UChar *src, int32_t count);
00752
00762
U_CAPI UChar* U_EXPORT2
00763
u_memset(
UChar *dest,
UChar c, int32_t count);
00764
00776
U_CAPI int32_t U_EXPORT2
00777
u_memcmp(
const UChar *buf1,
const UChar *buf2, int32_t count);
00778
00792
U_CAPI int32_t U_EXPORT2
00793
u_memcmpCodePointOrder(
const UChar *s1,
const UChar *s2, int32_t count);
00794
00812
U_CAPI UChar* U_EXPORT2
00813
u_memchr(
const UChar *s,
UChar c, int32_t count);
00814
00832
U_CAPI UChar* U_EXPORT2
00833
u_memchr32(
const UChar *s,
UChar32 c, int32_t count);
00834
00852
U_CAPI UChar* U_EXPORT2
00853
u_memrchr(
const UChar *s,
UChar c, int32_t count);
00854
00872
U_CAPI UChar* U_EXPORT2
00873
u_memrchr32(
const UChar *s,
UChar32 c, int32_t count);
00874
00911
#if U_SIZEOF_WCHAR_T==U_SIZEOF_UCHAR && U_CHARSET_FAMILY==U_ASCII_FAMILY
00912 # define U_STRING_DECL(var, cs, length) static const wchar_t var[(length)+1]={ L ## cs }
00913
00914 # define U_STRING_INIT(var, cs, length)
00915
#elif U_SIZEOF_UCHAR==1 && U_CHARSET_FAMILY==U_ASCII_FAMILY
00916
# define U_STRING_DECL(var, cs, length) static const UChar var[(length)+1]={ (const UChar *)cs }
00917
00918
# define U_STRING_INIT(var, cs, length)
00919
#else
00920
# define U_STRING_DECL(var, cs, length) static UChar var[(length)+1]
00921
00922
# define U_STRING_INIT(var, cs, length) u_charsToUChars(cs, var, length+1)
00923
#endif
00924
00972
U_CAPI int32_t U_EXPORT2
00973
u_unescape(
const char *src,
00974
UChar *dest, int32_t destCapacity);
00975
00976
U_CDECL_BEGIN
00989
typedef UChar (U_CALLCONV *UNESCAPE_CHAR_AT)(int32_t offset,
void *context);
00990
U_CDECL_END
00991
01020
U_CAPI UChar32 U_EXPORT2
01021
u_unescapeAt(UNESCAPE_CHAR_AT charAt,
01022 int32_t *offset,
01023 int32_t length,
01024
void *context);
01025
01046
U_CAPI int32_t U_EXPORT2
01047
u_strToUpper(
UChar *dest, int32_t destCapacity,
01048
const UChar *src, int32_t srcLength,
01049
const char *locale,
01050
UErrorCode *pErrorCode);
01051
01072
U_CAPI int32_t U_EXPORT2
01073
u_strToLower(
UChar *dest, int32_t destCapacity,
01074
const UChar *src, int32_t srcLength,
01075
const char *locale,
01076
UErrorCode *pErrorCode);
01077
01078
#if !UCONFIG_NO_BREAK_ITERATION
01079
01118
U_CAPI int32_t U_EXPORT2
01119
u_strToTitle(
UChar *dest, int32_t destCapacity,
01120
const UChar *src, int32_t srcLength,
01121 UBreakIterator *titleIter,
01122
const char *locale,
01123
UErrorCode *pErrorCode);
01124
01125
#endif
01126
01149
U_CAPI int32_t U_EXPORT2
01150
u_strFoldCase(
UChar *dest, int32_t destCapacity,
01151
const UChar *src, int32_t srcLength,
01152 uint32_t options,
01153
UErrorCode *pErrorCode);
01154
01174
U_CAPI wchar_t* U_EXPORT2
01175
u_strToWCS(
wchar_t *dest,
01176 int32_t destCapacity,
01177 int32_t *pDestLength,
01178
const UChar *src,
01179 int32_t srcLength,
01180
UErrorCode *pErrorCode);
01200
U_CAPI UChar* U_EXPORT2
01201
u_strFromWCS(
UChar *dest,
01202 int32_t destCapacity,
01203 int32_t *pDestLength,
01204
const wchar_t *src,
01205 int32_t srcLength,
01206
UErrorCode *pErrorCode);
01226
U_CAPI char* U_EXPORT2
01227
u_strToUTF8(
char *dest,
01228 int32_t destCapacity,
01229 int32_t *pDestLength,
01230
const UChar *src,
01231 int32_t srcLength,
01232
UErrorCode *pErrorCode);
01233
01253
U_CAPI UChar* U_EXPORT2
01254
u_strFromUTF8(
UChar *dest,
01255 int32_t destCapacity,
01256 int32_t *pDestLength,
01257
const char *src,
01258 int32_t srcLength,
01259
UErrorCode *pErrorCode);
01260
01280
U_CAPI UChar32* U_EXPORT2
01281
u_strToUTF32(
UChar32 *dest,
01282 int32_t destCapacity,
01283 int32_t *pDestLength,
01284
const UChar *src,
01285 int32_t srcLength,
01286
UErrorCode *pErrorCode);
01287
01307
U_CAPI UChar* U_EXPORT2
01308
u_strFromUTF32(
UChar *dest,
01309 int32_t destCapacity,
01310 int32_t *pDestLength,
01311
const UChar32 *src,
01312 int32_t srcLength,
01313
UErrorCode *pErrorCode);
01314
01315
#endif