10b57cec5SDimitry Andric //===--- CharInfo.cpp - Static Data for Classifying ASCII Characters ------===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric #include "clang/Basic/CharInfo.h" 100b57cec5SDimitry Andric 110b57cec5SDimitry Andric using namespace clang::charinfo; 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric // Statically initialize CharInfo table based on ASCII character set 140b57cec5SDimitry Andric // Reference: FreeBSD 7.2 /usr/share/misc/ascii 150b57cec5SDimitry Andric const uint16_t clang::charinfo::InfoTable[256] = { 160b57cec5SDimitry Andric // 0 NUL 1 SOH 2 STX 3 ETX 170b57cec5SDimitry Andric // 4 EOT 5 ENQ 6 ACK 7 BEL 180b57cec5SDimitry Andric 0 , 0 , 0 , 0 , 190b57cec5SDimitry Andric 0 , 0 , 0 , 0 , 200b57cec5SDimitry Andric // 8 BS 9 HT 10 NL 11 VT 210b57cec5SDimitry Andric //12 NP 13 CR 14 SO 15 SI 220b57cec5SDimitry Andric 0 , CHAR_HORZ_WS, CHAR_VERT_WS, CHAR_HORZ_WS, 230b57cec5SDimitry Andric CHAR_HORZ_WS, CHAR_VERT_WS, 0 , 0 , 240b57cec5SDimitry Andric //16 DLE 17 DC1 18 DC2 19 DC3 250b57cec5SDimitry Andric //20 DC4 21 NAK 22 SYN 23 ETB 260b57cec5SDimitry Andric 0 , 0 , 0 , 0 , 270b57cec5SDimitry Andric 0 , 0 , 0 , 0 , 280b57cec5SDimitry Andric //24 CAN 25 EM 26 SUB 27 ESC 290b57cec5SDimitry Andric //28 FS 29 GS 30 RS 31 US 300b57cec5SDimitry Andric 0 , 0 , 0 , 0 , 310b57cec5SDimitry Andric 0 , 0 , 0 , 0 , 320b57cec5SDimitry Andric //32 SP 33 ! 34 " 35 # 330b57cec5SDimitry Andric //36 $ 37 % 38 & 39 ' 340b57cec5SDimitry Andric CHAR_SPACE , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , 350b57cec5SDimitry Andric CHAR_PUNCT , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , 360b57cec5SDimitry Andric //40 ( 41 ) 42 * 43 + 370b57cec5SDimitry Andric //44 , 45 - 46 . 47 / 380b57cec5SDimitry Andric CHAR_PUNCT , CHAR_PUNCT , CHAR_RAWDEL , CHAR_RAWDEL , 390b57cec5SDimitry Andric CHAR_RAWDEL , CHAR_RAWDEL , CHAR_PERIOD , CHAR_RAWDEL , 400b57cec5SDimitry Andric //48 0 49 1 50 2 51 3 410b57cec5SDimitry Andric //52 4 53 5 54 6 55 7 420b57cec5SDimitry Andric CHAR_DIGIT , CHAR_DIGIT , CHAR_DIGIT , CHAR_DIGIT , 430b57cec5SDimitry Andric CHAR_DIGIT , CHAR_DIGIT , CHAR_DIGIT , CHAR_DIGIT , 440b57cec5SDimitry Andric //56 8 57 9 58 : 59 ; 450b57cec5SDimitry Andric //60 < 61 = 62 > 63 ? 460b57cec5SDimitry Andric CHAR_DIGIT , CHAR_DIGIT , CHAR_RAWDEL , CHAR_RAWDEL , 470b57cec5SDimitry Andric CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , 480b57cec5SDimitry Andric //64 @ 65 A 66 B 67 C 490b57cec5SDimitry Andric //68 D 69 E 70 F 71 G 500b57cec5SDimitry Andric CHAR_PUNCT , CHAR_XUPPER , CHAR_XUPPER , CHAR_XUPPER , 510b57cec5SDimitry Andric CHAR_XUPPER , CHAR_XUPPER , CHAR_XUPPER , CHAR_UPPER , 520b57cec5SDimitry Andric //72 H 73 I 74 J 75 K 530b57cec5SDimitry Andric //76 L 77 M 78 N 79 O 540b57cec5SDimitry Andric CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , 550b57cec5SDimitry Andric CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , 560b57cec5SDimitry Andric //80 P 81 Q 82 R 83 S 570b57cec5SDimitry Andric //84 T 85 U 86 V 87 W 580b57cec5SDimitry Andric CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , 590b57cec5SDimitry Andric CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , 600b57cec5SDimitry Andric //88 X 89 Y 90 Z 91 [ 610b57cec5SDimitry Andric //92 \ 93 ] 94 ^ 95 _ 620b57cec5SDimitry Andric CHAR_UPPER , CHAR_UPPER , CHAR_UPPER , CHAR_RAWDEL , 630b57cec5SDimitry Andric CHAR_PUNCT , CHAR_RAWDEL , CHAR_RAWDEL , CHAR_UNDER , 640b57cec5SDimitry Andric //96 ` 97 a 98 b 99 c 650b57cec5SDimitry Andric //100 d 101 e 102 f 103 g 660b57cec5SDimitry Andric CHAR_PUNCT , CHAR_XLOWER , CHAR_XLOWER , CHAR_XLOWER , 670b57cec5SDimitry Andric CHAR_XLOWER , CHAR_XLOWER , CHAR_XLOWER , CHAR_LOWER , 680b57cec5SDimitry Andric //104 h 105 i 106 j 107 k 690b57cec5SDimitry Andric //108 l 109 m 110 n 111 o 700b57cec5SDimitry Andric CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , 710b57cec5SDimitry Andric CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , 720b57cec5SDimitry Andric //112 p 113 q 114 r 115 s 730b57cec5SDimitry Andric //116 t 117 u 118 v 119 w 740b57cec5SDimitry Andric CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , 750b57cec5SDimitry Andric CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , 760b57cec5SDimitry Andric //120 x 121 y 122 z 123 { 770b57cec5SDimitry Andric //124 | 125 } 126 ~ 127 DEL 780b57cec5SDimitry Andric CHAR_LOWER , CHAR_LOWER , CHAR_LOWER , CHAR_RAWDEL , 790b57cec5SDimitry Andric CHAR_RAWDEL , CHAR_RAWDEL , CHAR_RAWDEL , 0 800b57cec5SDimitry Andric }; 81