]>
Commit | Line | Data |
---|---|---|
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 |