1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/intl/icu/source/common/cstring.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,140 @@ 1.4 +/* 1.5 +****************************************************************************** 1.6 +* 1.7 +* Copyright (C) 1997-2012, International Business Machines 1.8 +* Corporation and others. All Rights Reserved. 1.9 +* 1.10 +****************************************************************************** 1.11 +* 1.12 +* File CSTRING.H 1.13 +* 1.14 +* Contains CString interface 1.15 +* 1.16 +* @author Helena Shih 1.17 +* 1.18 +* Modification History: 1.19 +* 1.20 +* Date Name Description 1.21 +* 6/17/98 hshih Created. 1.22 +* 05/03/99 stephen Changed from functions to macros. 1.23 +* 06/14/99 stephen Added icu_strncat, icu_strncmp, icu_tolower 1.24 +* 1.25 +****************************************************************************** 1.26 +*/ 1.27 + 1.28 +#ifndef CSTRING_H 1.29 +#define CSTRING_H 1 1.30 + 1.31 +#include "unicode/utypes.h" 1.32 +#include "cmemory.h" 1.33 +#include <string.h> 1.34 +#include <stdlib.h> 1.35 +#include <ctype.h> 1.36 + 1.37 +#define uprv_strcpy(dst, src) U_STANDARD_CPP_NAMESPACE strcpy(dst, src) 1.38 +#define uprv_strlen(str) U_STANDARD_CPP_NAMESPACE strlen(str) 1.39 +#define uprv_strcmp(s1, s2) U_STANDARD_CPP_NAMESPACE strcmp(s1, s2) 1.40 +#define uprv_strcat(dst, src) U_STANDARD_CPP_NAMESPACE strcat(dst, src) 1.41 +#define uprv_strchr(s, c) U_STANDARD_CPP_NAMESPACE strchr(s, c) 1.42 +#define uprv_strstr(s, c) U_STANDARD_CPP_NAMESPACE strstr(s, c) 1.43 +#define uprv_strrchr(s, c) U_STANDARD_CPP_NAMESPACE strrchr(s, c) 1.44 + 1.45 +#if U_DEBUG 1.46 + 1.47 +#define uprv_strncpy(dst, src, size) ( \ 1.48 + uprv_checkValidMemory(src, 1), \ 1.49 + U_STANDARD_CPP_NAMESPACE strncpy(dst, src, size)) 1.50 +#define uprv_strncmp(s1, s2, n) ( \ 1.51 + uprv_checkValidMemory(s1, 1), \ 1.52 + uprv_checkValidMemory(s2, 1), \ 1.53 + U_STANDARD_CPP_NAMESPACE strncmp(s1, s2, n)) 1.54 +#define uprv_strncat(dst, src, n) ( \ 1.55 + uprv_checkValidMemory(src, 1), \ 1.56 + U_STANDARD_CPP_NAMESPACE strncat(dst, src, n)) 1.57 + 1.58 +#else 1.59 + 1.60 +#define uprv_strncpy(dst, src, size) U_STANDARD_CPP_NAMESPACE strncpy(dst, src, size) 1.61 +#define uprv_strncmp(s1, s2, n) U_STANDARD_CPP_NAMESPACE strncmp(s1, s2, n) 1.62 +#define uprv_strncat(dst, src, n) U_STANDARD_CPP_NAMESPACE strncat(dst, src, n) 1.63 + 1.64 +#endif /* U_DEBUG */ 1.65 + 1.66 +/** 1.67 + * Is c an ASCII-repertoire letter a-z or A-Z? 1.68 + * Note: The implementation is specific to whether ICU is compiled for 1.69 + * an ASCII-based or EBCDIC-based machine. There just does not seem to be a better name for this. 1.70 + */ 1.71 +U_CAPI UBool U_EXPORT2 1.72 +uprv_isASCIILetter(char c); 1.73 + 1.74 +U_CAPI char U_EXPORT2 1.75 +uprv_toupper(char c); 1.76 + 1.77 + 1.78 +U_CAPI char U_EXPORT2 1.79 +uprv_asciitolower(char c); 1.80 + 1.81 +U_CAPI char U_EXPORT2 1.82 +uprv_ebcdictolower(char c); 1.83 + 1.84 +#if U_CHARSET_FAMILY==U_ASCII_FAMILY 1.85 +# define uprv_tolower uprv_asciitolower 1.86 +#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY 1.87 +# define uprv_tolower uprv_ebcdictolower 1.88 +#else 1.89 +# error U_CHARSET_FAMILY is not valid 1.90 +#endif 1.91 + 1.92 +#define uprv_strtod(source, end) U_STANDARD_CPP_NAMESPACE strtod(source, end) 1.93 +#define uprv_strtoul(str, end, base) U_STANDARD_CPP_NAMESPACE strtoul(str, end, base) 1.94 +#define uprv_strtol(str, end, base) U_STANDARD_CPP_NAMESPACE strtol(str, end, base) 1.95 + 1.96 +/* Conversion from a digit to the character with radix base from 2-19 */ 1.97 +/* May need to use U_UPPER_ORDINAL*/ 1.98 +#define T_CString_itosOffset(a) ((a)<=9?('0'+(a)):('A'+(a)-10)) 1.99 + 1.100 +U_CAPI char* U_EXPORT2 1.101 +uprv_strdup(const char *src); 1.102 + 1.103 +/** 1.104 + * uprv_malloc n+1 bytes, and copy n bytes from src into the new string. 1.105 + * Terminate with a null at offset n. If n is -1, works like uprv_strdup 1.106 + * @param src 1.107 + * @param n length of the input string, not including null. 1.108 + * @return new string (owned by caller, use uprv_free to free). 1.109 + * @internal 1.110 + */ 1.111 +U_CAPI char* U_EXPORT2 1.112 +uprv_strndup(const char *src, int32_t n); 1.113 + 1.114 +U_CAPI char* U_EXPORT2 1.115 +T_CString_toLowerCase(char* str); 1.116 + 1.117 +U_CAPI char* U_EXPORT2 1.118 +T_CString_toUpperCase(char* str); 1.119 + 1.120 +U_CAPI int32_t U_EXPORT2 1.121 +T_CString_integerToString(char *buffer, int32_t n, int32_t radix); 1.122 + 1.123 +U_CAPI int32_t U_EXPORT2 1.124 +T_CString_int64ToString(char *buffer, int64_t n, uint32_t radix); 1.125 + 1.126 +U_CAPI int32_t U_EXPORT2 1.127 +T_CString_stringToInteger(const char *integerString, int32_t radix); 1.128 + 1.129 +/** 1.130 + * Case-insensitive, language-independent string comparison 1.131 + * limited to the ASCII character repertoire. 1.132 + */ 1.133 +U_CAPI int U_EXPORT2 1.134 +uprv_stricmp(const char *str1, const char *str2); 1.135 + 1.136 +/** 1.137 + * Case-insensitive, language-independent string comparison 1.138 + * limited to the ASCII character repertoire. 1.139 + */ 1.140 +U_CAPI int U_EXPORT2 1.141 +uprv_strnicmp(const char *str1, const char *str2, uint32_t n); 1.142 + 1.143 +#endif /* ! CSTRING_H */