blob: 39c86eea43b03b022a440fe30de165d3ee8a67cd [file] [log] [blame]
Daniel Dunbarfcdd8fe2008-10-04 19:21:03 +00001//===---- ParserPragmas.h - Language specific pragmas -----------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file defines #pragma handlers for language specific pragmas.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_CLANG_PARSE_PARSEPRAGMA_H
15#define LLVM_CLANG_PARSE_PARSEPRAGMA_H
16
17#include "clang/Lex/Pragma.h"
18
19namespace clang {
20 class Action;
Ted Kremenek4726d032009-03-23 22:28:25 +000021 class Parser;
Daniel Dunbarfcdd8fe2008-10-04 19:21:03 +000022
23class PragmaPackHandler : public PragmaHandler {
24 Action &Actions;
25public:
26 PragmaPackHandler(const IdentifierInfo *N, Action &A) : PragmaHandler(N),
27 Actions(A) {}
28
29 virtual void HandlePragma(Preprocessor &PP, Token &FirstToken);
30};
Ted Kremenek4726d032009-03-23 22:28:25 +000031
32class PragmaUnusedHandler : public PragmaHandler {
33 Action &Actions;
34 Parser &parser;
35public:
36 PragmaUnusedHandler(const IdentifierInfo *N, Action &A, Parser& p)
37 : PragmaHandler(N), Actions(A), parser(p) {}
38
39 virtual void HandlePragma(Preprocessor &PP, Token &FirstToken);
40};
Daniel Dunbarfcdd8fe2008-10-04 19:21:03 +000041
Eli Friedman99914792009-06-05 00:49:58 +000042class PragmaWeakHandler : public PragmaHandler {
43 Action &Actions;
44public:
45 PragmaWeakHandler(const IdentifierInfo *N, Action &A)
46 : PragmaHandler(N), Actions(A) {}
47
48 virtual void HandlePragma(Preprocessor &PP, Token &FirstToken);
49};
50
Daniel Dunbarfcdd8fe2008-10-04 19:21:03 +000051} // end namespace clang
52
53#endif