9#ifndef LLVM_CLANG_BASIC_CHARINFO_H
10#define LLVM_CLANG_BASIC_CHARINFO_H
13#include "llvm/ADT/StringRef.h"
14#include "llvm/Support/Compiler.h"
15#include "llvm/Support/DataTypes.h"
42 return static_cast<unsigned char>(
c) <= 127;
45LLVM_READNONE
inline bool isASCII(
unsigned char c) {
return c <= 127; }
48LLVM_READNONE
inline bool isASCII(uint32_t
c) {
return c <= 127; }
49LLVM_READNONE
inline bool isASCII(int64_t
c) {
return 0 <=
c &&
c <= 127; }
54 bool AllowDollar =
false) {
55 using namespace charinfo;
56 if (
InfoTable[
c] & (CHAR_UPPER|CHAR_LOWER|CHAR_UNDER))
58 return AllowDollar &&
c ==
'$';
63 static constexpr unsigned char IDContinue[256] = {
64 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
65 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
66 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
67 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
68 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
69 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
70 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
71 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
72 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
73 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
74 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
84 return AllowDollar &&
c ==
'$';
92 using namespace charinfo;
93 return (
InfoTable[
c] & (CHAR_HORZ_WS|CHAR_SPACE)) != 0;
100 using namespace charinfo;
109 using namespace charinfo;
110 return (
InfoTable[
c] & (CHAR_HORZ_WS|CHAR_VERT_WS|CHAR_SPACE)) != 0;
114LLVM_READONLY
inline bool isDigit(
unsigned char c) {
115 using namespace charinfo;
121 using namespace charinfo;
127 using namespace charinfo;
133 using namespace charinfo;
134 return (
InfoTable[
c] & (CHAR_UPPER|CHAR_LOWER)) != 0;
139 using namespace charinfo;
140 return (
InfoTable[
c] & (CHAR_DIGIT|CHAR_UPPER|CHAR_LOWER)) != 0;
145 using namespace charinfo;
146 return (
InfoTable[
c] & (CHAR_DIGIT|CHAR_XLETTER)) != 0;
153 using namespace charinfo;
154 return (
InfoTable[
c] & (CHAR_UNDER | CHAR_PERIOD | CHAR_PUNCT)) != 0;
161 using namespace charinfo;
162 return (
InfoTable[
c] & (CHAR_UPPER | CHAR_LOWER | CHAR_PERIOD | CHAR_PUNCT |
163 CHAR_DIGIT | CHAR_UNDER | CHAR_SPACE)) != 0;
169 using namespace charinfo;
171 (CHAR_UPPER|CHAR_LOWER|CHAR_DIGIT|CHAR_UNDER|CHAR_PERIOD)) != 0;
176 using namespace charinfo;
177 return (
InfoTable[
c] & (CHAR_UPPER | CHAR_LOWER | CHAR_PERIOD | CHAR_DIGIT |
178 CHAR_UNDER | CHAR_PUNCT)) != 0 &&
179 c !=
'(' &&
c !=
')' &&
c !=
'\\';