xref: /netbsd-src/external/apache2/llvm/dist/clang/lib/Basic/CharInfo.cpp (revision 7330f729ccf0bd976a06f95fad452fe774fc7fd1)
1*7330f729Sjoerg //===--- CharInfo.cpp - Static Data for Classifying ASCII Characters ------===//
2*7330f729Sjoerg //
3*7330f729Sjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*7330f729Sjoerg // See https://llvm.org/LICENSE.txt for license information.
5*7330f729Sjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*7330f729Sjoerg //
7*7330f729Sjoerg //===----------------------------------------------------------------------===//
8*7330f729Sjoerg 
9*7330f729Sjoerg #include "clang/Basic/CharInfo.h"
10*7330f729Sjoerg 
11*7330f729Sjoerg using namespace clang::charinfo;
12*7330f729Sjoerg 
13*7330f729Sjoerg // Statically initialize CharInfo table based on ASCII character set
14*7330f729Sjoerg // Reference: FreeBSD 7.2 /usr/share/misc/ascii
15*7330f729Sjoerg const uint16_t clang::charinfo::InfoTable[256] = {
16*7330f729Sjoerg   // 0 NUL         1 SOH         2 STX         3 ETX
17*7330f729Sjoerg   // 4 EOT         5 ENQ         6 ACK         7 BEL
18*7330f729Sjoerg   0           , 0           , 0           , 0           ,
19*7330f729Sjoerg   0           , 0           , 0           , 0           ,
20*7330f729Sjoerg   // 8 BS          9 HT         10 NL         11 VT
21*7330f729Sjoerg   //12 NP         13 CR         14 SO         15 SI
22*7330f729Sjoerg   0           , CHAR_HORZ_WS, CHAR_VERT_WS, CHAR_HORZ_WS,
23*7330f729Sjoerg   CHAR_HORZ_WS, CHAR_VERT_WS, 0           , 0           ,
24*7330f729Sjoerg   //16 DLE        17 DC1        18 DC2        19 DC3
25*7330f729Sjoerg   //20 DC4        21 NAK        22 SYN        23 ETB
26*7330f729Sjoerg   0           , 0           , 0           , 0           ,
27*7330f729Sjoerg   0           , 0           , 0           , 0           ,
28*7330f729Sjoerg   //24 CAN        25 EM         26 SUB        27 ESC
29*7330f729Sjoerg   //28 FS         29 GS         30 RS         31 US
30*7330f729Sjoerg   0           , 0           , 0           , 0           ,
31*7330f729Sjoerg   0           , 0           , 0           , 0           ,
32*7330f729Sjoerg   //32 SP         33  !         34  "         35  #
33*7330f729Sjoerg   //36  $         37  %         38  &         39  '
34*7330f729Sjoerg   CHAR_SPACE  , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL ,
35*7330f729Sjoerg   CHAR_PUNCT  , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL ,
36*7330f729Sjoerg   //40  (         41  )         42  *         43  +
37*7330f729Sjoerg   //44  ,         45  -         46  .         47  /
38*7330f729Sjoerg   CHAR_PUNCT  , CHAR_PUNCT  , CHAR_RAWDEL , CHAR_RAWDEL ,
39*7330f729Sjoerg   CHAR_RAWDEL , CHAR_RAWDEL , CHAR_PERIOD , CHAR_RAWDEL ,
40*7330f729Sjoerg   //48  0         49  1         50  2         51  3
41*7330f729Sjoerg   //52  4         53  5         54  6         55  7
42*7330f729Sjoerg   CHAR_DIGIT  , CHAR_DIGIT  , CHAR_DIGIT  , CHAR_DIGIT  ,
43*7330f729Sjoerg   CHAR_DIGIT  , CHAR_DIGIT  , CHAR_DIGIT  , CHAR_DIGIT  ,
44*7330f729Sjoerg   //56  8         57  9         58  :         59  ;
45*7330f729Sjoerg   //60  <         61  =         62  >         63  ?
46*7330f729Sjoerg   CHAR_DIGIT  , CHAR_DIGIT  , CHAR_RAWDEL , CHAR_RAWDEL ,
47*7330f729Sjoerg   CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL ,
48*7330f729Sjoerg   //64  @         65  A         66  B         67  C
49*7330f729Sjoerg   //68  D         69  E         70  F         71  G
50*7330f729Sjoerg   CHAR_PUNCT  , CHAR_XUPPER , CHAR_XUPPER , CHAR_XUPPER ,
51*7330f729Sjoerg   CHAR_XUPPER , CHAR_XUPPER , CHAR_XUPPER , CHAR_UPPER  ,
52*7330f729Sjoerg   //72  H         73  I         74  J         75  K
53*7330f729Sjoerg   //76  L         77  M         78  N         79  O
54*7330f729Sjoerg   CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  ,
55*7330f729Sjoerg   CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  ,
56*7330f729Sjoerg   //80  P         81  Q         82  R         83  S
57*7330f729Sjoerg   //84  T         85  U         86  V         87  W
58*7330f729Sjoerg   CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  ,
59*7330f729Sjoerg   CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  ,
60*7330f729Sjoerg   //88  X         89  Y         90  Z         91  [
61*7330f729Sjoerg   //92  \         93  ]         94  ^         95  _
62*7330f729Sjoerg   CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  , CHAR_RAWDEL ,
63*7330f729Sjoerg   CHAR_PUNCT  , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_UNDER  ,
64*7330f729Sjoerg   //96  `         97  a         98  b         99  c
65*7330f729Sjoerg   //100  d       101  e        102  f        103  g
66*7330f729Sjoerg   CHAR_PUNCT  , CHAR_XLOWER , CHAR_XLOWER , CHAR_XLOWER ,
67*7330f729Sjoerg   CHAR_XLOWER , CHAR_XLOWER , CHAR_XLOWER , CHAR_LOWER  ,
68*7330f729Sjoerg   //104  h       105  i        106  j        107  k
69*7330f729Sjoerg   //108  l       109  m        110  n        111  o
70*7330f729Sjoerg   CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  ,
71*7330f729Sjoerg   CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  ,
72*7330f729Sjoerg   //112  p       113  q        114  r        115  s
73*7330f729Sjoerg   //116  t       117  u        118  v        119  w
74*7330f729Sjoerg   CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  ,
75*7330f729Sjoerg   CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  ,
76*7330f729Sjoerg   //120  x       121  y        122  z        123  {
77*7330f729Sjoerg   //124  |       125  }        126  ~        127 DEL
78*7330f729Sjoerg   CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  , CHAR_RAWDEL ,
79*7330f729Sjoerg   CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , 0
80*7330f729Sjoerg };
81