/src/icu/source/common/uinvchar.h
Line | Count | Source (jump to first uncovered line) |
1 | | // © 2016 and later: Unicode, Inc. and others. |
2 | | // License & terms of use: http://www.unicode.org/copyright.html |
3 | | /* |
4 | | ******************************************************************************* |
5 | | * |
6 | | * Copyright (C) 1999-2015, International Business Machines |
7 | | * Corporation and others. All Rights Reserved. |
8 | | * |
9 | | ******************************************************************************* |
10 | | * file name: uinvchar.h |
11 | | * encoding: UTF-8 |
12 | | * tab size: 8 (not used) |
13 | | * indentation:2 |
14 | | * |
15 | | * created on: 2004sep14 |
16 | | * created by: Markus W. Scherer |
17 | | * |
18 | | * Definitions for handling invariant characters, moved here from putil.c |
19 | | * for better modularization. |
20 | | */ |
21 | | |
22 | | #ifndef __UINVCHAR_H__ |
23 | | #define __UINVCHAR_H__ |
24 | | |
25 | | #include "unicode/utypes.h" |
26 | | #ifdef __cplusplus |
27 | | #include "unicode/unistr.h" |
28 | | #endif |
29 | | |
30 | | /** |
31 | | * Check if a char string only contains invariant characters. |
32 | | * See utypes.h for details. |
33 | | * |
34 | | * @param s Input string pointer. |
35 | | * @param length Length of the string, can be -1 if NUL-terminated. |
36 | | * @return TRUE if s contains only invariant characters. |
37 | | * |
38 | | * @internal (ICU 2.8) |
39 | | */ |
40 | | U_INTERNAL UBool U_EXPORT2 |
41 | | uprv_isInvariantString(const char *s, int32_t length); |
42 | | |
43 | | /** |
44 | | * Check if a Unicode string only contains invariant characters. |
45 | | * See utypes.h for details. |
46 | | * |
47 | | * @param s Input string pointer. |
48 | | * @param length Length of the string, can be -1 if NUL-terminated. |
49 | | * @return TRUE if s contains only invariant characters. |
50 | | * |
51 | | * @internal (ICU 2.8) |
52 | | */ |
53 | | U_INTERNAL UBool U_EXPORT2 |
54 | | uprv_isInvariantUString(const UChar *s, int32_t length); |
55 | | |
56 | | #ifdef __cplusplus |
57 | | |
58 | | /** |
59 | | * Check if a UnicodeString only contains invariant characters. |
60 | | * See utypes.h for details. |
61 | | * |
62 | | * @param s Input string. |
63 | | * @return TRUE if s contains only invariant characters. |
64 | | */ |
65 | | U_INTERNAL inline UBool U_EXPORT2 |
66 | 0 | uprv_isInvariantUnicodeString(const icu::UnicodeString &s) { |
67 | 0 | return uprv_isInvariantUString(icu::toUCharPtr(s.getBuffer()), s.length()); |
68 | 0 | } |
69 | | |
70 | | #endif /* __cplusplus */ |
71 | | |
72 | | /** |
73 | | * \def U_UPPER_ORDINAL |
74 | | * Get the ordinal number of an uppercase invariant character |
75 | | * @internal |
76 | | */ |
77 | | #if U_CHARSET_FAMILY==U_ASCII_FAMILY |
78 | | # define U_UPPER_ORDINAL(x) ((x)-'A') |
79 | | #elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY |
80 | | # define U_UPPER_ORDINAL(x) (((x) < 'J') ? ((x)-'A') : \ |
81 | | (((x) < 'S') ? ((x)-'J'+9) : \ |
82 | | ((x)-'S'+18))) |
83 | | #else |
84 | | # error Unknown charset family! |
85 | | #endif |
86 | | |
87 | | /** |
88 | | * Compare two EBCDIC invariant-character strings in ASCII order. |
89 | | * @internal |
90 | | */ |
91 | | U_INTERNAL int32_t U_EXPORT2 |
92 | | uprv_compareInvEbcdicAsAscii(const char *s1, const char *s2); |
93 | | |
94 | | /** |
95 | | * \def uprv_compareInvCharsAsAscii |
96 | | * Compare two invariant-character strings in ASCII order. |
97 | | * @internal |
98 | | */ |
99 | | #if U_CHARSET_FAMILY==U_ASCII_FAMILY |
100 | 0 | # define uprv_compareInvCharsAsAscii(s1, s2) uprv_strcmp(s1, s2) |
101 | | #elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY |
102 | | # define uprv_compareInvCharsAsAscii(s1, s2) uprv_compareInvEbcdicAsAscii(s1, s2) |
103 | | #else |
104 | | # error Unknown charset family! |
105 | | #endif |
106 | | |
107 | | /** |
108 | | * Converts an EBCDIC invariant character to lowercase ASCII. |
109 | | * @internal |
110 | | */ |
111 | | U_INTERNAL char U_EXPORT2 |
112 | | uprv_ebcdicToLowercaseAscii(char c); |
113 | | |
114 | | /** |
115 | | * \def uprv_invCharToLowercaseAscii |
116 | | * Converts an invariant character to lowercase ASCII. |
117 | | * @internal |
118 | | */ |
119 | | #if U_CHARSET_FAMILY==U_ASCII_FAMILY |
120 | | # define uprv_invCharToLowercaseAscii uprv_asciitolower |
121 | | #elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY |
122 | | # define uprv_invCharToLowercaseAscii uprv_ebcdicToLowercaseAscii |
123 | | #else |
124 | | # error Unknown charset family! |
125 | | #endif |
126 | | |
127 | | /** |
128 | | * Copy EBCDIC to ASCII |
129 | | * @internal |
130 | | * @see uprv_strncpy |
131 | | */ |
132 | | U_INTERNAL uint8_t* U_EXPORT2 |
133 | | uprv_aestrncpy(uint8_t *dst, const uint8_t *src, int32_t n); |
134 | | |
135 | | |
136 | | /** |
137 | | * Copy ASCII to EBCDIC |
138 | | * @internal |
139 | | * @see uprv_strncpy |
140 | | */ |
141 | | U_INTERNAL uint8_t* U_EXPORT2 |
142 | | uprv_eastrncpy(uint8_t *dst, const uint8_t *src, int32_t n); |
143 | | |
144 | | |
145 | | |
146 | | #endif |