1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
|
// $Id: ctype_table.c,v 1.1.1.1 2013/12/11 20:49:20 bcbrock Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/lib/ctype_table.c,v $
//-----------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2013
// *! All Rights Reserved -- Property of IBM
// *! *** IBM Confidential ***
//-----------------------------------------------------------------------------
/// \file ctype_table.c
/// \brief Character table for <ctype.h> functions.
///
/// This table is used by the <ctype.h> functions for a quick lookup of
/// character type information. Because the true functional forms of <ctype.h>
/// functions are likely never required, but this file is always required, it
/// is stored separately from ctype.c to (slightly) reduce code/data space
/// requirements.
#include <stdint.h>
#include <ctype.h>
const uint8_t _ctype[256] = {
_CTYPE_CNTRL, /* 0 00 NUL Null char */
_CTYPE_CNTRL, /* 1 01 SOH Start of Heading */
_CTYPE_CNTRL, /* 2 02 STX Start of Text */
_CTYPE_CNTRL, /* 3 03 ETX End of Text */
_CTYPE_CNTRL, /* 4 04 EOT End of Transmission */
_CTYPE_CNTRL, /* 5 05 ENQ Enquiry */
_CTYPE_CNTRL, /* 6 06 ACK Acknowledgment */
_CTYPE_CNTRL, /* 7 07 BEL Bell */
_CTYPE_CNTRL, /* 8 08 BS Back Space */
_CTYPE_CNTRL | _CTYPE_SPACE, /* 9 09 HT Horizontal Tab */
_CTYPE_CNTRL | _CTYPE_SPACE, /* 10 0A LF Line Feed */
_CTYPE_CNTRL | _CTYPE_SPACE, /* 11 0B VT Vertical Tab */
_CTYPE_CNTRL | _CTYPE_SPACE, /* 12 0C FF Form Feed */
_CTYPE_CNTRL | _CTYPE_SPACE, /* 13 0D CR Carriage Return */
_CTYPE_CNTRL, /* 14 0E SO Shift Out / X-On */
_CTYPE_CNTRL, /* 15 0F SI Shift In / X-Off */
0, /* 16 10 DLE Data Line Escape */
0, /* 17 11 DC1 Device Control 1 (oft. XON) */
0, /* 18 12 DC2 Device Control 2 */
0, /* 19 13 DC3 Device Control 3 (oft. XOFF) */
0, /* 20 14 DC4 Device Control 4 */
0, /* 21 15 NAK Negative Acknowledgement */
0, /* 22 16 SYN Synchronous Idle */
0, /* 23 17 ETB End of Transmit Block */
0, /* 24 18 CAN Cancel */
0, /* 25 19 EM End of Medium */
0, /* 26 1A SUB Substitute */
0, /* 27 1B ESC Escape */
0, /* 28 1C FS File Separator */
0, /* 29 1D GS Group Separator */
0, /* 30 1E RS Record Separator */
0, /* 31 1F US Unit Separator */
_CTYPE_PRINT | _CTYPE_SPACE, /* 32 20 Space */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 33 21 ! Exclamation mark */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 34 22 " Double quotes (or speech marks) */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 35 23 # Number */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 36 24 $ Dollar */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 37 25 % Procenttecken */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 38 26 & Ampersand */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 39 27 ' Single quote */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 40 28 ( Open parenthesis (or open bracket) */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 41 29 ) Close parenthesis (or close bracket) */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 42 2A * Asterisk */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 43 2B + Plus */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 44 2C , Comma */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 45 2D - Hyphen */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 46 2E . Period, dot or full stop */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 47 2F / Slash or divide */
_CTYPE_PRINT | _CTYPE_DIGIT, /* 48 30 0 Zero */
_CTYPE_PRINT | _CTYPE_DIGIT, /* 49 31 1 One */
_CTYPE_PRINT | _CTYPE_DIGIT, /* 50 32 2 Two */
_CTYPE_PRINT | _CTYPE_DIGIT, /* 51 33 3 Three */
_CTYPE_PRINT | _CTYPE_DIGIT, /* 52 34 4 Four */
_CTYPE_PRINT | _CTYPE_DIGIT, /* 53 35 5 Five */
_CTYPE_PRINT | _CTYPE_DIGIT, /* 54 36 6 Six */
_CTYPE_PRINT | _CTYPE_DIGIT, /* 55 37 7 Seven */
_CTYPE_PRINT | _CTYPE_DIGIT, /* 56 38 8 Eight */
_CTYPE_PRINT | _CTYPE_DIGIT, /* 57 39 9 Nine */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 58 3A : Colon */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 59 3B ; Semicolon */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 60 3C < Less than (or open angled bracket) */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 61 3D = Equals */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 62 3E > Greater than (or close angled bracket) */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 63 3F ? Question mark */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 64 40 @ At symbol */
_CTYPE_PRINT | _CTYPE_UPPER | _CTYPE_XDIGIT, /* 65 41 A Uppercase A */
_CTYPE_PRINT | _CTYPE_UPPER | _CTYPE_XDIGIT, /* 66 42 B Uppercase B */
_CTYPE_PRINT | _CTYPE_UPPER | _CTYPE_XDIGIT, /* 67 43 C Uppercase C */
_CTYPE_PRINT | _CTYPE_UPPER | _CTYPE_XDIGIT, /* 68 44 D Uppercase D */
_CTYPE_PRINT | _CTYPE_UPPER | _CTYPE_XDIGIT, /* 69 45 E Uppercase E */
_CTYPE_PRINT | _CTYPE_UPPER | _CTYPE_XDIGIT, /* 70 46 F Uppercase F */
_CTYPE_PRINT | _CTYPE_UPPER, /* 71 47 G Uppercase G */
_CTYPE_PRINT | _CTYPE_UPPER, /* 72 48 H Uppercase H */
_CTYPE_PRINT | _CTYPE_UPPER, /* 73 49 I Uppercase I */
_CTYPE_PRINT | _CTYPE_UPPER, /* 74 4A J Uppercase J */
_CTYPE_PRINT | _CTYPE_UPPER, /* 75 4B K Uppercase K */
_CTYPE_PRINT | _CTYPE_UPPER, /* 76 4C L Uppercase L */
_CTYPE_PRINT | _CTYPE_UPPER, /* 77 4D M Uppercase M */
_CTYPE_PRINT | _CTYPE_UPPER, /* 78 4E N Uppercase N */
_CTYPE_PRINT | _CTYPE_UPPER, /* 79 4F O Uppercase O */
_CTYPE_PRINT | _CTYPE_UPPER, /* 80 50 P Uppercase P */
_CTYPE_PRINT | _CTYPE_UPPER, /* 81 51 Q Uppercase Q */
_CTYPE_PRINT | _CTYPE_UPPER, /* 82 52 R Uppercase R */
_CTYPE_PRINT | _CTYPE_UPPER, /* 83 53 S Uppercase S */
_CTYPE_PRINT | _CTYPE_UPPER, /* 84 54 T Uppercase T */
_CTYPE_PRINT | _CTYPE_UPPER, /* 85 55 U Uppercase U */
_CTYPE_PRINT | _CTYPE_UPPER, /* 86 56 V Uppercase V */
_CTYPE_PRINT | _CTYPE_UPPER, /* 87 57 W Uppercase W */
_CTYPE_PRINT | _CTYPE_UPPER, /* 88 58 X Uppercase X */
_CTYPE_PRINT | _CTYPE_UPPER, /* 89 59 Y Uppercase Y */
_CTYPE_PRINT | _CTYPE_UPPER, /* 90 5A Z Uppercase Z */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 91 5B [ Opening bracket */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 92 5C \ Backslash */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 93 5D ] Closing bracket */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 94 5E ^ Caret - circumflex */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 95 5F _ Underscore */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 96 60 ` Grave accent */
_CTYPE_PRINT | _CTYPE_LOWER | _CTYPE_XDIGIT, /* 97 61 a Lowercase a */
_CTYPE_PRINT | _CTYPE_LOWER | _CTYPE_XDIGIT, /* 98 62 b Lowercase b */
_CTYPE_PRINT | _CTYPE_LOWER | _CTYPE_XDIGIT, /* 99 63 c Lowercase c */
_CTYPE_PRINT | _CTYPE_LOWER | _CTYPE_XDIGIT, /* 100 64 d Lowercase d */
_CTYPE_PRINT | _CTYPE_LOWER | _CTYPE_XDIGIT, /* 101 65 e Lowercase e */
_CTYPE_PRINT | _CTYPE_LOWER | _CTYPE_XDIGIT, /* 102 66 f Lowercase f */
_CTYPE_PRINT | _CTYPE_LOWER, /* 103 67 g Lowercase g */
_CTYPE_PRINT | _CTYPE_LOWER, /* 104 68 h Lowercase h */
_CTYPE_PRINT | _CTYPE_LOWER, /* 105 69 i Lowercase i */
_CTYPE_PRINT | _CTYPE_LOWER, /* 106 6A j Lowercase j */
_CTYPE_PRINT | _CTYPE_LOWER, /* 107 6B k Lowercase k */
_CTYPE_PRINT | _CTYPE_LOWER, /* 108 6C l Lowercase l */
_CTYPE_PRINT | _CTYPE_LOWER, /* 109 6D m Lowercase m */
_CTYPE_PRINT | _CTYPE_LOWER, /* 110 6E n Lowercase n */
_CTYPE_PRINT | _CTYPE_LOWER, /* 111 6F o Lowercase o */
_CTYPE_PRINT | _CTYPE_LOWER, /* 112 70 p Lowercase p */
_CTYPE_PRINT | _CTYPE_LOWER, /* 113 71 q Lowercase q */
_CTYPE_PRINT | _CTYPE_LOWER, /* 114 72 r Lowercase r */
_CTYPE_PRINT | _CTYPE_LOWER, /* 115 73 s Lowercase s */
_CTYPE_PRINT | _CTYPE_LOWER, /* 116 74 t Lowercase t */
_CTYPE_PRINT | _CTYPE_LOWER, /* 117 75 u Lowercase u */
_CTYPE_PRINT | _CTYPE_LOWER, /* 118 76 v Lowercase v */
_CTYPE_PRINT | _CTYPE_LOWER, /* 119 77 w Lowercase w */
_CTYPE_PRINT | _CTYPE_LOWER, /* 120 78 x Lowercase x */
_CTYPE_PRINT | _CTYPE_LOWER, /* 121 79 y Lowercase y */
_CTYPE_PRINT | _CTYPE_LOWER, /* 122 7A z Lowercase z */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 123 7B { Opening brace */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 124 7C | Vertical bar */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 125 7D } Closing brace */
_CTYPE_PRINT | _CTYPE_PUNCT, /* 126 7E ~ Equivalency sign - tilde */
0, /* 127 7F Delete */
0, /* 128 80 Euro sign */
0, /* 129 81 */
0, /* 130 82 ' Single low-9 quotation mark */
0, /* 131 83 Latin small letter f with hook */
0, /* 132 84 " Double low-9 quotation mark */
0, /* 133 85 Horizontal ellipsis */
0, /* 134 86 Dagger */
0, /* 135 87 Double dagger */
0, /* 136 88 Modifier letter circumflex accent */
0, /* 137 89 Per mille sign */
0, /* 138 8A Latin capital letter S with caron */
0, /* 139 8B Single left-pointing angle quotation */
0, /* 140 8C Latin capital ligature OE */
0, /* 141 8D */
0, /* 142 8E Latin captial letter Z with caron */
0, /* 143 8F */
0, /* 144 90 */
0, /* 145 91 ' Left single quotation mark */
0, /* 146 92 ' Right single quotation mark */
0, /* 147 93 " Left double quotation mark */
0, /* 148 94 " Right double quotation mark */
0, /* 149 95 Bullet */
0, /* 150 96 En dash */
0, /* 151 97 Em dash */
0, /* 152 98 Small tilde */
0, /* 153 99 Trade mark sign */
0, /* 154 9A Latin small letter S with caron */
0, /* 155 9B Single right-pointing angle quotation mark */
0, /* 156 9C Latin small ligature oe */
0, /* 157 9D */
0, /* 158 9E Latin small letter z with caron */
0, /* 159 9F Latin capital letter Y with diaeresis */
0, /* 160 A0 Non-breaking space */
0, /* 161 A1 Inverted exclamation mark */
0, /* 162 A2 Cent sign */
0, /* 163 A3 Pound sign */
0, /* 164 A4 Currency sign */
0, /* 165 A5 Yen sign */
0, /* 166 A6 Pipe, Broken vertical bar */
0, /* 167 A7 Section sign */
0, /* 168 A8 Spacing diaeresis - umlaut */
0, /* 169 A9 Copyright sign */
0, /* 170 AA Feminine ordinal indicator */
0, /* 171 AB Left double angle quotes */
0, /* 172 AC Not sign */
0, /* 173 AD Soft hyphen */
0, /* 174 AE Registered trade mark sign */
0, /* 175 AF Spacing macron - overline */
0, /* 176 B0 Degree sign */
0, /* 177 B1 Plus-or-minus sign */
0, /* 178 B2 Superscript two - squared */
0, /* 179 B3 Superscript three - cubed */
0, /* 180 B4 Acute accent - spacing acute */
0, /* 181 B5 Micro sign */
0, /* 182 B6 Pilcrow sign - paragraph sign */
0, /* 183 B7 Middle dot - Georgian comma */
0, /* 184 B8 Spacing cedilla */
0, /* 185 B9 Superscript one */
0, /* 186 BA Masculine ordinal indicator */
0, /* 187 BB Right double angle quotes */
0, /* 188 BC one quarter */
0, /* 189 BD Fraction one half */
0, /* 190 BE Fraction three quarters */
0, /* 191 BF Inverted question mark */
0, /* 192 C0 Latin capital letter A with grave */
0, /* 193 C1 Latin capital letter A with acute */
0, /* 194 C2 Latin capital letter A with circumflex */
0, /* 195 C3 Latin capital letter A with tilde */
0, /* 196 C4 Latin capital letter A with diaeresis */
0, /* 197 C5 Latin capital letter A with ring above */
0, /* 198 C6 Latin capital letter AE */
0, /* 199 C7 Latin capital letter C with cedilla */
0, /* 200 C8 Latin capital letter E with grave */
0, /* 201 C9 Latin capital letter E with acute */
0, /* 202 CA Latin capital letter E with circumflex */
0, /* 203 CB Latin capital letter E with diaeresis */
0, /* 204 CC Latin capital letter I with grave */
0, /* 205 CD Latin capital letter I with acute */
0, /* 206 CE Latin capital letter I with circumflex */
0, /* 207 CF Latin capital letter I with diaeresis */
0, /* 208 D0 Latin capital letter ETH */
0, /* 209 D1 Latin capital letter N with tilde */
0, /* 210 D2 Latin capital letter O with grave */
0, /* 211 D3 Latin capital letter O with acute */
0, /* 212 D4 Latin capital letter O with circumflex */
0, /* 213 D5 Latin capital letter O with tilde */
0, /* 214 D6 Latin capital letter O with diaeresis */
0, /* 215 D7 Multiplication sign */
0, /* 216 D8 Latin capital letter O with slash */
0, /* 217 D9 Latin capital letter U with grave */
0, /* 218 DA Latin capital letter U with acute */
0, /* 219 DB Latin capital letter U with circumflex */
0, /* 220 DC Latin capital letter U with diaeresis */
0, /* 221 DD Latin capital letter Y with acute */
0, /* 222 DE Latin capital letter THORN */
0, /* 223 DF Latin small letter sharp s - ess-zed */
0, /* 224 E0 Latin small letter a with grave */
0, /* 225 E1 Latin small letter a with acute */
0, /* 226 E2 Latin small letter a with circumflex */
0, /* 227 E3 Latin small letter a with tilde */
0, /* 228 E4 Latin small letter a with diaeresis */
0, /* 229 E5 Latin small letter a with ring above */
0, /* 230 E6 Latin small letter ae */
0, /* 231 E7 Latin small letter c with cedilla */
0, /* 232 E8 Latin small letter e with grave */
0, /* 233 E9 Latin small letter e with acute */
0, /* 234 EA Latin small letter e with circumflex */
0, /* 235 EB Latin small letter e with diaeresis */
0, /* 236 EC Latin small letter i with grave */
0, /* 237 ED Latin small letter i with acute */
0, /* 238 EE Latin small letter i with circumflex */
0, /* 239 EF Latin small letter i with diaeresis */
0, /* 240 F0 Latin small letter eth */
0, /* 241 F1 Latin small letter n with tilde */
0, /* 242 F2 Latin small letter o with grave */
0, /* 243 F3 Latin small letter o with acute */
0, /* 244 F4 Latin small letter o with circumflex */
0, /* 245 F5 Latin small letter o with tilde */
0, /* 246 F6 Latin small letter o with diaeresis */
0, /* 247 F7 Division sign */
0, /* 248 F8 Latin small letter o with slash */
0, /* 249 F9 Latin small letter u with grave */
0, /* 250 FA Latin small letter u with acute */
0, /* 251 FB Latin small letter u with circumflex */
0, /* 252 FC Latin small letter u with diaeresis */
0, /* 253 FD Latin small letter y with acute */
0, /* 254 FE Latin small letter thorn */
0, /* 255 FF Latin small letter y with diaeresis */
};
|