1 //===---- ParserPragmas.h - Language specific pragmas -----------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines #pragma handlers for language specific pragmas.
12 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_CLANG_PARSE_PARSEPRAGMA_H
15 #define LLVM_CLANG_PARSE_PARSEPRAGMA_H
17 #include "clang/Lex/Pragma.h"
23 class PragmaAlignHandler : public PragmaHandler {
25 explicit PragmaAlignHandler() : PragmaHandler("align") {}
27 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
31 class PragmaGCCVisibilityHandler : public PragmaHandler {
33 explicit PragmaGCCVisibilityHandler() : PragmaHandler("visibility") {}
35 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
39 class PragmaOptionsHandler : public PragmaHandler {
41 explicit PragmaOptionsHandler() : PragmaHandler("options") {}
43 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
47 class PragmaPackHandler : public PragmaHandler {
49 explicit PragmaPackHandler() : PragmaHandler("pack") {}
51 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
55 class PragmaMSStructHandler : public PragmaHandler {
57 explicit PragmaMSStructHandler() : PragmaHandler("ms_struct") {}
59 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
63 class PragmaUnusedHandler : public PragmaHandler {
65 PragmaUnusedHandler() : PragmaHandler("unused") {}
67 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
71 class PragmaWeakHandler : public PragmaHandler {
73 explicit PragmaWeakHandler() : PragmaHandler("weak") {}
75 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
79 class PragmaRedefineExtnameHandler : public PragmaHandler {
81 explicit PragmaRedefineExtnameHandler() : PragmaHandler("redefine_extname") {}
83 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
87 class PragmaOpenCLExtensionHandler : public PragmaHandler {
89 PragmaOpenCLExtensionHandler() : PragmaHandler("EXTENSION") {}
90 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
95 class PragmaFPContractHandler : public PragmaHandler {
97 PragmaFPContractHandler() : PragmaHandler("FP_CONTRACT") {}
98 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
102 class PragmaNoOpenMPHandler : public PragmaHandler {
104 PragmaNoOpenMPHandler() : PragmaHandler("omp") { }
105 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
109 class PragmaOpenMPHandler : public PragmaHandler {
111 PragmaOpenMPHandler() : PragmaHandler("omp") { }
112 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
116 /// PragmaCommentHandler - "\#pragma comment ...".
117 class PragmaCommentHandler : public PragmaHandler {
119 PragmaCommentHandler(Sema &Actions)
120 : PragmaHandler("comment"), Actions(Actions) {}
121 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
127 class PragmaDetectMismatchHandler : public PragmaHandler {
129 PragmaDetectMismatchHandler(Sema &Actions)
130 : PragmaHandler("detect_mismatch"), Actions(Actions) {}
131 virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
137 } // end namespace clang