blob: 55c56583ae4c46032bf9d20f4762460446abbb34 [file] [log] [blame]
Shih-wei Liao462aefd2010-06-04 15:32:04 -07001#ifndef _SLANG_COMPILER_PRAGMA_HANDLER_HPP
2# define _SLANG_COMPILER_PRAGMA_HANDLER_HPP
3
4#include <list>
5#include <string>
6
7#include "clang/Lex/Pragma.h" /* for class clang::PragmaHandler */
8
9namespace clang {
10
11class Token;
12class Preprocessor;
13
14} /* namespace clang */
15
16namespace slang {
17
18using namespace clang;
19
20typedef std::list< std::pair<std::string, std::string> > PragmaList;
21
22class PragmaRecorder : public PragmaHandler {
23private:
24 PragmaList& mPragmas;
25
26 static bool GetPragmaNameFromToken(const Token& Token, std::string& PragmaName);
27
28 static bool GetPragmaValueFromToken(const Token& Token, std::string& PragmaValue);
29
30public:
31 PragmaRecorder(PragmaList& Pragmas);
32
33 virtual void HandlePragma(Preprocessor &PP, Token &FirstToken);
34}; /* class PragmaRecorder */
35
36} /* namespace slang */
37
38#endif /* _SLANG_COMPILER_PRAGMA_HANDLER_HPP */