diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Parse/ParsePragma.h')
-rw-r--r-- | contrib/llvm/tools/clang/lib/Parse/ParsePragma.h | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/contrib/llvm/tools/clang/lib/Parse/ParsePragma.h b/contrib/llvm/tools/clang/lib/Parse/ParsePragma.h new file mode 100644 index 0000000..d9560f3 --- /dev/null +++ b/contrib/llvm/tools/clang/lib/Parse/ParsePragma.h @@ -0,0 +1,126 @@ +//===---- ParserPragmas.h - Language specific pragmas -----------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines #pragma handlers for language specific pragmas. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_PARSE_PARSEPRAGMA_H +#define LLVM_CLANG_PARSE_PARSEPRAGMA_H + +#include "clang/Lex/Pragma.h" + +namespace clang { + class Sema; + class Parser; + +class PragmaAlignHandler : public PragmaHandler { +public: + explicit PragmaAlignHandler() : PragmaHandler("align") {} + + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +class PragmaGCCVisibilityHandler : public PragmaHandler { +public: + explicit PragmaGCCVisibilityHandler() : PragmaHandler("visibility") {} + + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +class PragmaOptionsHandler : public PragmaHandler { +public: + explicit PragmaOptionsHandler() : PragmaHandler("options") {} + + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +class PragmaPackHandler : public PragmaHandler { +public: + explicit PragmaPackHandler() : PragmaHandler("pack") {} + + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +class PragmaMSStructHandler : public PragmaHandler { +public: + explicit PragmaMSStructHandler() : PragmaHandler("ms_struct") {} + + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +class PragmaUnusedHandler : public PragmaHandler { +public: + PragmaUnusedHandler() : PragmaHandler("unused") {} + + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +class PragmaWeakHandler : public PragmaHandler { +public: + explicit PragmaWeakHandler() : PragmaHandler("weak") {} + + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +class PragmaRedefineExtnameHandler : public PragmaHandler { +public: + explicit PragmaRedefineExtnameHandler() : PragmaHandler("redefine_extname") {} + + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +class PragmaOpenCLExtensionHandler : public PragmaHandler { +public: + PragmaOpenCLExtensionHandler() : PragmaHandler("EXTENSION") {} + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + + +class PragmaFPContractHandler : public PragmaHandler { +public: + PragmaFPContractHandler() : PragmaHandler("FP_CONTRACT") {} + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +class PragmaNoOpenMPHandler : public PragmaHandler { +public: + PragmaNoOpenMPHandler() : PragmaHandler("omp") { } + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +class PragmaOpenMPHandler : public PragmaHandler { +public: + PragmaOpenMPHandler() : PragmaHandler("omp") { } + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +/// PragmaCommentHandler - "\#pragma comment ...". +class PragmaCommentHandler : public PragmaHandler { +public: + PragmaCommentHandler() : PragmaHandler("comment") {} + virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer, + Token &FirstToken); +}; + +} // end namespace clang + +#endif |