14 #ifndef LLVM_CLANG_LEX_PRAGMA_H
15 #define LLVM_CLANG_LEX_PRAGMA_H
18 #include "llvm/ADT/StringMap.h"
19 #include "llvm/ADT/StringRef.h"
26 class PragmaNamespace;
66 StringRef
getName()
const {
return Name; }
68 Token &FirstToken) = 0;
82 Token &FirstToken)
override;
93 llvm::StringMap<PragmaHandler*> Handlers;
103 bool IgnoreNull =
true)
const;
114 return Handlers.empty();
118 Token &FirstToken)
override;
StringRef getName() const
virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, Token &FirstToken)=0
The pragma was introduced via the Microsoft __pragma(token-string).
The pragma was introduced via the C99 _Pragma(string-literal).
void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, Token &FirstToken) override
void AddPragma(PragmaHandler *Handler)
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified...
PragmaIntroducerKind
Describes how the pragma was introduced, e.g., with #pragma, _Pragma, or __pragma.
PragmaNamespace * getIfNamespace() override
PragmaHandler * FindHandler(StringRef Name, bool IgnoreNull=true) const
The pragma was introduced via #pragma.
~PragmaNamespace() override
virtual PragmaNamespace * getIfNamespace()
void RemovePragmaHandler(PragmaHandler *Handler)
void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, Token &FirstToken) override
PragmaNamespace(StringRef Name)
PragmaHandler(StringRef name)
Engages in a tight little dance with the lexer to efficiently preprocess tokens.