1249261Sdim//===--- CharInfo.cpp - Static Data for Classifying ASCII Characters ------===//
2249261Sdim//
3249261Sdim//                     The LLVM Compiler Infrastructure
4249261Sdim//
5249261Sdim// This file is distributed under the University of Illinois Open Source
6249261Sdim// License. See LICENSE.TXT for details.
7249261Sdim//
8249261Sdim//===----------------------------------------------------------------------===//
9249261Sdim
10249261Sdim#include "clang/Basic/CharInfo.h"
11249261Sdim
12249261Sdimusing namespace clang::charinfo;
13249261Sdim
14249261Sdim// Statically initialize CharInfo table based on ASCII character set
15249261Sdim// Reference: FreeBSD 7.2 /usr/share/misc/ascii
16249261Sdimconst uint16_t clang::charinfo::InfoTable[256] = {
17249261Sdim  // 0 NUL         1 SOH         2 STX         3 ETX
18249261Sdim  // 4 EOT         5 ENQ         6 ACK         7 BEL
19249261Sdim  0           , 0           , 0           , 0           ,
20249261Sdim  0           , 0           , 0           , 0           ,
21249261Sdim  // 8 BS          9 HT         10 NL         11 VT
22249261Sdim  //12 NP         13 CR         14 SO         15 SI
23249261Sdim  0           , CHAR_HORZ_WS, CHAR_VERT_WS, CHAR_HORZ_WS,
24249261Sdim  CHAR_HORZ_WS, CHAR_VERT_WS, 0           , 0           ,
25249261Sdim  //16 DLE        17 DC1        18 DC2        19 DC3
26249261Sdim  //20 DC4        21 NAK        22 SYN        23 ETB
27249261Sdim  0           , 0           , 0           , 0           ,
28249261Sdim  0           , 0           , 0           , 0           ,
29249261Sdim  //24 CAN        25 EM         26 SUB        27 ESC
30249261Sdim  //28 FS         29 GS         30 RS         31 US
31249261Sdim  0           , 0           , 0           , 0           ,
32249261Sdim  0           , 0           , 0           , 0           ,
33249261Sdim  //32 SP         33  !         34  "         35  #
34249261Sdim  //36  $         37  %         38  &         39  '
35249261Sdim  CHAR_SPACE  , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL ,
36249261Sdim  CHAR_PUNCT  , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL ,
37249261Sdim  //40  (         41  )         42  *         43  +
38249261Sdim  //44  ,         45  -         46  .         47  /
39249261Sdim  CHAR_PUNCT  , CHAR_PUNCT  , CHAR_RAWDEL , CHAR_RAWDEL ,
40249261Sdim  CHAR_RAWDEL , CHAR_RAWDEL , CHAR_PERIOD , CHAR_RAWDEL ,
41249261Sdim  //48  0         49  1         50  2         51  3
42249261Sdim  //52  4         53  5         54  6         55  7
43249261Sdim  CHAR_DIGIT  , CHAR_DIGIT  , CHAR_DIGIT  , CHAR_DIGIT  ,
44249261Sdim  CHAR_DIGIT  , CHAR_DIGIT  , CHAR_DIGIT  , CHAR_DIGIT  ,
45249261Sdim  //56  8         57  9         58  :         59  ;
46249261Sdim  //60  <         61  =         62  >         63  ?
47249261Sdim  CHAR_DIGIT  , CHAR_DIGIT  , CHAR_RAWDEL , CHAR_RAWDEL ,
48249261Sdim  CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL ,
49249261Sdim  //64  @         65  A         66  B         67  C
50249261Sdim  //68  D         69  E         70  F         71  G
51249261Sdim  CHAR_PUNCT  , CHAR_XUPPER , CHAR_XUPPER , CHAR_XUPPER ,
52249261Sdim  CHAR_XUPPER , CHAR_XUPPER , CHAR_XUPPER , CHAR_UPPER  ,
53249261Sdim  //72  H         73  I         74  J         75  K
54249261Sdim  //76  L         77  M         78  N         79  O
55249261Sdim  CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  ,
56249261Sdim  CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  ,
57249261Sdim  //80  P         81  Q         82  R         83  S
58249261Sdim  //84  T         85  U         86  V         87  W
59249261Sdim  CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  ,
60249261Sdim  CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  ,
61249261Sdim  //88  X         89  Y         90  Z         91  [
62249261Sdim  //92  \         93  ]         94  ^         95  _
63249261Sdim  CHAR_UPPER  , CHAR_UPPER  , CHAR_UPPER  , CHAR_RAWDEL ,
64249261Sdim  CHAR_PUNCT  , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_UNDER  ,
65249261Sdim  //96  `         97  a         98  b         99  c
66249261Sdim  //100  d       101  e        102  f        103  g
67249261Sdim  CHAR_PUNCT  , CHAR_XLOWER , CHAR_XLOWER , CHAR_XLOWER ,
68249261Sdim  CHAR_XLOWER , CHAR_XLOWER , CHAR_XLOWER , CHAR_LOWER  ,
69249261Sdim  //104  h       105  i        106  j        107  k
70249261Sdim  //108  l       109  m        110  n        111  o
71249261Sdim  CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  ,
72249261Sdim  CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  ,
73249261Sdim  //112  p       113  q        114  r        115  s
74249261Sdim  //116  t       117  u        118  v        119  w
75249261Sdim  CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  ,
76249261Sdim  CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  ,
77249261Sdim  //120  x       121  y        122  z        123  {
78249261Sdim  //124  |       125  }        126  ~        127 DEL
79249261Sdim  CHAR_LOWER  , CHAR_LOWER  , CHAR_LOWER  , CHAR_RAWDEL ,
80249261Sdim  CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , 0
81249261Sdim};
82