forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			118 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===---- 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 {
 | |
|   Sema &Actions;
 | |
| public:
 | |
|   explicit PragmaAlignHandler(Sema &A) : PragmaHandler("align"), Actions(A) {}
 | |
| 
 | |
|   virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
 | |
|                             Token &FirstToken);
 | |
| };
 | |
| 
 | |
| class PragmaGCCVisibilityHandler : public PragmaHandler {
 | |
|   Sema &Actions;
 | |
| public:
 | |
|   explicit PragmaGCCVisibilityHandler(Sema &A) : PragmaHandler("visibility"),
 | |
|                                                  Actions(A) {}
 | |
| 
 | |
|   virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
 | |
|                             Token &FirstToken);
 | |
| };
 | |
| 
 | |
| class PragmaOptionsHandler : public PragmaHandler {
 | |
|   Sema &Actions;
 | |
| public:
 | |
|   explicit PragmaOptionsHandler(Sema &A) : PragmaHandler("options"),
 | |
|                                            Actions(A) {}
 | |
| 
 | |
|   virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
 | |
|                             Token &FirstToken);
 | |
| };
 | |
| 
 | |
| class PragmaPackHandler : public PragmaHandler {
 | |
|   Sema &Actions;
 | |
| public:
 | |
|   explicit PragmaPackHandler(Sema &A) : PragmaHandler("pack"),
 | |
|                                         Actions(A) {}
 | |
| 
 | |
|   virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
 | |
|                             Token &FirstToken);
 | |
| };
 | |
|   
 | |
| class PragmaMSStructHandler : public PragmaHandler {
 | |
|   Sema &Actions;
 | |
| public:
 | |
|   explicit PragmaMSStructHandler(Sema &A) : PragmaHandler("ms_struct"),
 | |
|   Actions(A) {}
 | |
|     
 | |
|   virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
 | |
|                             Token &FirstToken);
 | |
| };
 | |
| 
 | |
| class PragmaUnusedHandler : public PragmaHandler {
 | |
|   Sema &Actions;
 | |
|   Parser &parser;
 | |
| public:
 | |
|   PragmaUnusedHandler(Sema &A, Parser& p)
 | |
|     : PragmaHandler("unused"), Actions(A), parser(p) {}
 | |
| 
 | |
|   virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
 | |
|                             Token &FirstToken);
 | |
| };
 | |
| 
 | |
| class PragmaWeakHandler : public PragmaHandler {
 | |
|   Sema &Actions;
 | |
| public:
 | |
|   explicit PragmaWeakHandler(Sema &A)
 | |
|     : PragmaHandler("weak"), Actions(A) {}
 | |
| 
 | |
|   virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
 | |
|                             Token &FirstToken);
 | |
| };
 | |
| 
 | |
| class PragmaOpenCLExtensionHandler : public PragmaHandler {
 | |
|   Sema &Actions;
 | |
|   Parser &parser;
 | |
| public:
 | |
|   PragmaOpenCLExtensionHandler(Sema &S, Parser& p) : 
 | |
|     PragmaHandler("EXTENSION"), Actions(S), parser(p) {}
 | |
|   virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
 | |
|                             Token &FirstToken);
 | |
| };
 | |
|   
 | |
| 
 | |
| class PragmaFPContractHandler : public PragmaHandler {
 | |
|   Sema &Actions;
 | |
|   Parser &parser;
 | |
| public:
 | |
|   PragmaFPContractHandler(Sema &S, Parser& p) : 
 | |
|     PragmaHandler("FP_CONTRACT"), Actions(S), parser(p) {}
 | |
|   virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
 | |
|                             Token &FirstToken);
 | |
| };
 | |
|   
 | |
| 
 | |
| }  // end namespace clang
 | |
| 
 | |
| #endif
 |