blob: 929ec46c4ff55d1de53b786bc6d2d3402d7775fd [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
Daniel Dunbar861800c2010-05-26 23:29:06 +000023class PragmaOptionsHandler : public PragmaHandler {
24 Action &Actions;
25public:
Argyrios Kyrtzidis9b36c3f2010-07-13 09:07:17 +000026 explicit PragmaOptionsHandler(Action &A) : PragmaHandler("options"),
27 Actions(A) {}
Daniel Dunbar861800c2010-05-26 23:29:06 +000028
29 virtual void HandlePragma(Preprocessor &PP, Token &FirstToken);
30};
31
Daniel Dunbarfcdd8fe2008-10-04 19:21:03 +000032class PragmaPackHandler : public PragmaHandler {
33 Action &Actions;
34public:
Argyrios Kyrtzidis9b36c3f2010-07-13 09:07:17 +000035 explicit PragmaPackHandler(Action &A) : PragmaHandler("pack"),
36 Actions(A) {}
Mike Stump1eb44332009-09-09 15:08:12 +000037
38 virtual void HandlePragma(Preprocessor &PP, Token &FirstToken);
Daniel Dunbarfcdd8fe2008-10-04 19:21:03 +000039};
Mike Stump1eb44332009-09-09 15:08:12 +000040
Ted Kremenek4726d032009-03-23 22:28:25 +000041class PragmaUnusedHandler : public PragmaHandler {
42 Action &Actions;
43 Parser &parser;
44public:
Argyrios Kyrtzidis9b36c3f2010-07-13 09:07:17 +000045 PragmaUnusedHandler(Action &A, Parser& p)
46 : PragmaHandler("unused"), Actions(A), parser(p) {}
Mike Stump1eb44332009-09-09 15:08:12 +000047
48 virtual void HandlePragma(Preprocessor &PP, Token &FirstToken);
49};
Daniel Dunbarfcdd8fe2008-10-04 19:21:03 +000050
Eli Friedman99914792009-06-05 00:49:58 +000051class PragmaWeakHandler : public PragmaHandler {
52 Action &Actions;
53public:
Argyrios Kyrtzidis9b36c3f2010-07-13 09:07:17 +000054 explicit PragmaWeakHandler(Action &A)
55 : PragmaHandler("weak"), Actions(A) {}
Mike Stump1eb44332009-09-09 15:08:12 +000056
57 virtual void HandlePragma(Preprocessor &PP, Token &FirstToken);
Eli Friedman99914792009-06-05 00:49:58 +000058};
59
Daniel Dunbarfcdd8fe2008-10-04 19:21:03 +000060} // end namespace clang
61
62#endif