|
1 /* |
|
2 ******************************************************************************* |
|
3 * |
|
4 * Copyright (C) 1998-2012, International Business Machines |
|
5 * Corporation and others. All Rights Reserved. |
|
6 * |
|
7 ******************************************************************************* |
|
8 * |
|
9 * File ustr.h |
|
10 * |
|
11 * Modification History: |
|
12 * |
|
13 * Date Name Description |
|
14 * 05/28/99 stephen Creation. |
|
15 ******************************************************************************* |
|
16 */ |
|
17 |
|
18 #ifndef USTR_H |
|
19 #define USTR_H 1 |
|
20 |
|
21 #include "unicode/utypes.h" |
|
22 |
|
23 #define U_APPEND_CHAR32(c,target,len) { \ |
|
24 if (c <= 0xffff) \ |
|
25 { \ |
|
26 *(target)++ = (UChar) c; \ |
|
27 len=1; \ |
|
28 } \ |
|
29 else \ |
|
30 { \ |
|
31 target[0] = U16_LEAD(c); \ |
|
32 target[1] = U16_TRAIL(c); \ |
|
33 len=2; \ |
|
34 target +=2; \ |
|
35 } \ |
|
36 } |
|
37 |
|
38 #define U_APPEND_CHAR32_ONLY(c,target) { \ |
|
39 if (c <= 0xffff) \ |
|
40 { \ |
|
41 *(target)++ = (UChar) c; \ |
|
42 } \ |
|
43 else \ |
|
44 { \ |
|
45 target[0] = U16_LEAD(c); \ |
|
46 target[1] = U16_TRAIL(c); \ |
|
47 target +=2; \ |
|
48 } \ |
|
49 } |
|
50 |
|
51 /* A C representation of a string "object" (to avoid realloc all the time) */ |
|
52 struct UString { |
|
53 UChar *fChars; |
|
54 int32_t fLength; |
|
55 int32_t fCapacity; |
|
56 }; |
|
57 |
|
58 U_CFUNC void ustr_init(struct UString *s); |
|
59 |
|
60 U_CFUNC void |
|
61 ustr_initChars(struct UString *s, const char* source, int32_t length, UErrorCode *status); |
|
62 |
|
63 U_CFUNC void ustr_deinit(struct UString *s); |
|
64 |
|
65 U_CFUNC void ustr_setlen(struct UString *s, int32_t len, UErrorCode *status); |
|
66 |
|
67 U_CFUNC void ustr_cpy(struct UString *dst, const struct UString *src, |
|
68 UErrorCode *status); |
|
69 |
|
70 U_CFUNC void ustr_cat(struct UString *dst, const struct UString *src, |
|
71 UErrorCode *status); |
|
72 |
|
73 U_CFUNC void ustr_ncat(struct UString *dst, const struct UString *src, |
|
74 int32_t n, UErrorCode *status); |
|
75 |
|
76 U_CFUNC void ustr_ucat(struct UString *dst, UChar c, UErrorCode *status); |
|
77 U_CFUNC void ustr_u32cat(struct UString *dst, UChar32 c, UErrorCode *status); |
|
78 U_CFUNC void ustr_uscat(struct UString *dst, const UChar* src,int len,UErrorCode *status); |
|
79 #endif |