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) */ 52struct UString { 53 UChar *fChars; 54 int32_t fLength; 55 int32_t fCapacity; 56}; 57 58U_CFUNC void ustr_init(struct UString *s); 59 60U_CFUNC void 61ustr_initChars(struct UString *s, const char* source, int32_t length, UErrorCode *status); 62 63U_CFUNC void ustr_deinit(struct UString *s); 64 65U_CFUNC void ustr_setlen(struct UString *s, int32_t len, UErrorCode *status); 66 67U_CFUNC void ustr_cpy(struct UString *dst, const struct UString *src, 68 UErrorCode *status); 69 70U_CFUNC void ustr_cat(struct UString *dst, const struct UString *src, 71 UErrorCode *status); 72 73U_CFUNC void ustr_ncat(struct UString *dst, const struct UString *src, 74 int32_t n, UErrorCode *status); 75 76U_CFUNC void ustr_ucat(struct UString *dst, UChar c, UErrorCode *status); 77U_CFUNC void ustr_u32cat(struct UString *dst, UChar32 c, UErrorCode *status); 78U_CFUNC void ustr_uscat(struct UString *dst, const UChar* src,int len,UErrorCode *status); 79#endif 80