1 //===--- CharInfo.cpp - Static Data for Classifying ASCII Characters ------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #include "clang/Basic/CharInfo.h"
11 using namespace clang::charinfo
;
13 // Statically initialize CharInfo table based on ASCII character set
14 // Reference: FreeBSD 7.2 /usr/share/misc/ascii
15 const uint16_t clang::charinfo::InfoTable
[256] = {
16 // 0 NUL 1 SOH 2 STX 3 ETX
17 // 4 EOT 5 ENQ 6 ACK 7 BEL
20 // 8 BS 9 HT 10 NL 11 VT
21 //12 NP 13 CR 14 SO 15 SI
22 0 , CHAR_HORZ_WS
, CHAR_VERT_WS
, CHAR_HORZ_WS
,
23 CHAR_HORZ_WS
, CHAR_VERT_WS
, 0 , 0 ,
24 //16 DLE 17 DC1 18 DC2 19 DC3
25 //20 DC4 21 NAK 22 SYN 23 ETB
28 //24 CAN 25 EM 26 SUB 27 ESC
29 //28 FS 29 GS 30 RS 31 US
32 //32 SP 33 ! 34 " 35 #
34 CHAR_SPACE
, CHAR_RAWDEL
, CHAR_RAWDEL
, CHAR_RAWDEL
,
35 CHAR_PUNCT
, CHAR_RAWDEL
, CHAR_RAWDEL
, CHAR_RAWDEL
,
38 CHAR_PUNCT
, CHAR_PUNCT
, CHAR_RAWDEL
, CHAR_RAWDEL
,
39 CHAR_RAWDEL
, CHAR_RAWDEL
, CHAR_PERIOD
, CHAR_RAWDEL
,
42 CHAR_DIGIT
, CHAR_DIGIT
, CHAR_DIGIT
, CHAR_DIGIT
,
43 CHAR_DIGIT
, CHAR_DIGIT
, CHAR_DIGIT
, CHAR_DIGIT
,
46 CHAR_DIGIT
, CHAR_DIGIT
, CHAR_RAWDEL
, CHAR_RAWDEL
,
47 CHAR_RAWDEL
, CHAR_RAWDEL
, CHAR_RAWDEL
, CHAR_RAWDEL
,
50 CHAR_PUNCT
, CHAR_XUPPER
, CHAR_XUPPER
, CHAR_XUPPER
,
51 CHAR_XUPPER
, CHAR_XUPPER
, CHAR_XUPPER
, CHAR_UPPER
,
54 CHAR_UPPER
, CHAR_UPPER
, CHAR_UPPER
, CHAR_UPPER
,
55 CHAR_UPPER
, CHAR_UPPER
, CHAR_UPPER
, CHAR_UPPER
,
58 CHAR_UPPER
, CHAR_UPPER
, CHAR_UPPER
, CHAR_UPPER
,
59 CHAR_UPPER
, CHAR_UPPER
, CHAR_UPPER
, CHAR_UPPER
,
62 CHAR_UPPER
, CHAR_UPPER
, CHAR_UPPER
, CHAR_RAWDEL
,
63 CHAR_PUNCT
, CHAR_RAWDEL
, CHAR_RAWDEL
, CHAR_UNDER
,
65 //100 d 101 e 102 f 103 g
66 CHAR_PUNCT
, CHAR_XLOWER
, CHAR_XLOWER
, CHAR_XLOWER
,
67 CHAR_XLOWER
, CHAR_XLOWER
, CHAR_XLOWER
, CHAR_LOWER
,
68 //104 h 105 i 106 j 107 k
69 //108 l 109 m 110 n 111 o
70 CHAR_LOWER
, CHAR_LOWER
, CHAR_LOWER
, CHAR_LOWER
,
71 CHAR_LOWER
, CHAR_LOWER
, CHAR_LOWER
, CHAR_LOWER
,
72 //112 p 113 q 114 r 115 s
73 //116 t 117 u 118 v 119 w
74 CHAR_LOWER
, CHAR_LOWER
, CHAR_LOWER
, CHAR_LOWER
,
75 CHAR_LOWER
, CHAR_LOWER
, CHAR_LOWER
, CHAR_LOWER
,
76 //120 x 121 y 122 z 123 {
77 //124 | 125 } 126 ~ 127 DEL
78 CHAR_LOWER
, CHAR_LOWER
, CHAR_LOWER
, CHAR_RAWDEL
,
79 CHAR_RAWDEL
, CHAR_RAWDEL
, CHAR_RAWDEL
, 0