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"
43 return static_cast<unsigned char>(
c) <= 127;
46LLVM_READNONE
inline bool isASCII(
unsigned char c) {
return c <= 127; }
49LLVM_READNONE
inline bool isASCII(uint32_t
c) {
return c <= 127; }
50LLVM_READNONE
inline bool isASCII(int64_t
c) {
return 0 <=
c &&
c <= 127; }
55 bool AllowDollar =
false) {
56 using namespace charinfo;
57 if (
InfoTable[
c] & (CHAR_UPPER|CHAR_LOWER|CHAR_UNDER))
59 return AllowDollar &&
c ==
'$';
65 bool AllowDollar =
false) {
66 using namespace charinfo;
67 if (
InfoTable[
c] & (CHAR_UPPER|CHAR_LOWER|CHAR_DIGIT|CHAR_UNDER))
69 return AllowDollar &&
c ==
'$';
77 using namespace charinfo;
78 return (
InfoTable[
c] & (CHAR_HORZ_WS|CHAR_SPACE)) != 0;
85 using namespace charinfo;
94 using namespace charinfo;
95 return (
InfoTable[
c] & (CHAR_HORZ_WS|CHAR_VERT_WS|CHAR_SPACE)) != 0;
99LLVM_READONLY
inline bool isDigit(
unsigned char c) {
100 using namespace charinfo;
106 using namespace charinfo;
112 using namespace charinfo;
118 using namespace charinfo;
119 return (
InfoTable[
c] & (CHAR_UPPER|CHAR_LOWER)) != 0;
124 using namespace charinfo;
125 return (
InfoTable[
c] & (CHAR_DIGIT|CHAR_UPPER|CHAR_LOWER)) != 0;
130 using namespace charinfo;
131 return (
InfoTable[
c] & (CHAR_DIGIT|CHAR_XLETTER)) != 0;
138 using namespace charinfo;
139 return (
InfoTable[
c] & (CHAR_UNDER|CHAR_PERIOD|CHAR_RAWDEL|CHAR_PUNCT)) != 0;
146 using namespace charinfo;
147 return (
InfoTable[
c] & (CHAR_UPPER|CHAR_LOWER|CHAR_PERIOD|CHAR_PUNCT|
148 CHAR_DIGIT|CHAR_UNDER|CHAR_RAWDEL|CHAR_SPACE)) != 0;
154 using namespace charinfo;
156 (CHAR_UPPER|CHAR_LOWER|CHAR_DIGIT|CHAR_UNDER|CHAR_PERIOD)) != 0;
161 using namespace charinfo;
162 return (
InfoTable[
c] & (CHAR_UPPER|CHAR_LOWER|CHAR_PERIOD|
163 CHAR_DIGIT|CHAR_UNDER|CHAR_RAWDEL)) != 0;
174template <EscapeChar Opt,
class CharT>
210 return c +
'a' -
'A';
219 return c +
'A' -
'a';
229 bool AllowDollar =
false) {
233 for (StringRef::iterator I = S.begin(), E = S.end(); I != E; ++I)
static constexpr OptTable::Info InfoTable[]
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.
__device__ __2f16 float c
const uint16_t InfoTable[256]
LLVM_READNONE bool isASCII(char c)
Returns true if a byte is an ASCII character.
LLVM_READONLY bool isVerticalWhitespace(unsigned char c)
Returns true if this character is vertical ASCII whitespace: '\n', '\r'.
LLVM_READONLY bool isPrintable(unsigned char c)
Return true if this character is an ASCII printable character; that is, a character that should take ...
LLVM_READONLY auto escapeCStyle(CharT Ch) -> StringRef
Return C-style escaped string for special characters, or an empty string if there is no such mapping.
LLVM_READONLY char toLowercase(char c)
Converts the given ASCII character to its lowercase equivalent.
LLVM_READONLY bool isUppercase(unsigned char c)
Return true if this character is an uppercase ASCII letter: [A-Z].
LLVM_READONLY bool isValidAsciiIdentifier(StringRef S, bool AllowDollar=false)
Return true if this is a valid ASCII identifier.
LLVM_READONLY bool isLetter(unsigned char c)
Return true if this character is an ASCII letter: [a-zA-Z].
LLVM_READONLY bool isAlphanumeric(unsigned char c)
Return true if this character is an ASCII letter or digit: [a-zA-Z0-9].
LLVM_READONLY bool isHorizontalWhitespace(unsigned char c)
Returns true if this character is horizontal ASCII whitespace: ' ', '\t', '\f', '\v'.
LLVM_READONLY bool isRawStringDelimBody(unsigned char c)
Return true if this is the body character of a C++ raw string delimiter.
LLVM_READONLY bool isDigit(unsigned char c)
Return true if this character is an ASCII digit: [0-9].
LLVM_READONLY bool isLowercase(unsigned char c)
Return true if this character is a lowercase ASCII letter: [a-z].
LLVM_READONLY bool isWhitespace(unsigned char c)
Return true if this character is horizontal or vertical ASCII whitespace: ' ', '\t',...
LLVM_READONLY bool isPreprocessingNumberBody(unsigned char c)
Return true if this is the body character of a C preprocessing number, which is [a-zA-Z0-9_.
LLVM_READONLY char toUppercase(char c)
Converts the given ASCII character to its uppercase equivalent.
LLVM_READONLY bool isAsciiIdentifierContinue(unsigned char c, bool AllowDollar=false)
Returns true if this is a body character of a C identifier, which is [a-zA-Z0-9_].
LLVM_READONLY bool isHexDigit(unsigned char c)
Return true if this character is an ASCII hex digit: [0-9a-fA-F].
LLVM_READONLY bool isPunctuation(unsigned char c)
Return true if this character is an ASCII punctuation character.
LLVM_READONLY bool isAsciiIdentifierStart(unsigned char c, bool AllowDollar=false)
Returns true if this is a valid first character of a C identifier, which is [a-zA-Z_].