zonr | 6315f76 | 2010-10-05 15:35:14 +0800 | [diff] [blame] | 1 | #ifndef _SLANG_COMPILER_PRAGMA_HANDLER_H |
2 | #define _SLANG_COMPILER_PRAGMA_HANDLER_H | ||||
Shih-wei Liao | 9ef2f78 | 2010-10-01 12:31:37 -0700 | [diff] [blame] | 3 | |
Shih-wei Liao | 462aefd | 2010-06-04 15:32:04 -0700 | [diff] [blame] | 4 | #include <list> |
5 | #include <string> | ||||
6 | |||||
zonr | 6315f76 | 2010-10-05 15:35:14 +0800 | [diff] [blame] | 7 | #include "clang/Lex/Pragma.h" |
Shih-wei Liao | 462aefd | 2010-06-04 15:32:04 -0700 | [diff] [blame] | 8 | |
9 | namespace clang { | ||||
zonr | 6315f76 | 2010-10-05 15:35:14 +0800 | [diff] [blame] | 10 | class Token; |
11 | class Preprocessor; | ||||
Shih-wei Liao | 9ef2f78 | 2010-10-01 12:31:37 -0700 | [diff] [blame] | 12 | } |
Shih-wei Liao | 462aefd | 2010-06-04 15:32:04 -0700 | [diff] [blame] | 13 | |
14 | namespace slang { | ||||
15 | |||||
Shih-wei Liao | 462aefd | 2010-06-04 15:32:04 -0700 | [diff] [blame] | 16 | typedef std::list< std::pair<std::string, std::string> > PragmaList; |
17 | |||||
Shih-wei Liao | 9ef2f78 | 2010-10-01 12:31:37 -0700 | [diff] [blame] | 18 | class PragmaRecorder : public clang::PragmaHandler { |
19 | private: | ||||
20 | PragmaList &mPragmas; | ||||
Shih-wei Liao | 462aefd | 2010-06-04 15:32:04 -0700 | [diff] [blame] | 21 | |
Shih-wei Liao | 9ef2f78 | 2010-10-01 12:31:37 -0700 | [diff] [blame] | 22 | static bool GetPragmaNameFromToken(const clang::Token &Token, |
23 | std::string &PragmaName); | ||||
Shih-wei Liao | 462aefd | 2010-06-04 15:32:04 -0700 | [diff] [blame] | 24 | |
Shih-wei Liao | 9ef2f78 | 2010-10-01 12:31:37 -0700 | [diff] [blame] | 25 | static bool GetPragmaValueFromToken(const clang::Token &Token, |
26 | std::string &PragmaValue); | ||||
Shih-wei Liao | 462aefd | 2010-06-04 15:32:04 -0700 | [diff] [blame] | 27 | |
Shih-wei Liao | 9ef2f78 | 2010-10-01 12:31:37 -0700 | [diff] [blame] | 28 | public: |
zonr | 6315f76 | 2010-10-05 15:35:14 +0800 | [diff] [blame] | 29 | explicit PragmaRecorder(PragmaList &Pragmas); |
Shih-wei Liao | 462aefd | 2010-06-04 15:32:04 -0700 | [diff] [blame] | 30 | |
Shih-wei Liao | 9ef2f78 | 2010-10-01 12:31:37 -0700 | [diff] [blame] | 31 | virtual void HandlePragma(clang::Preprocessor &PP, |
32 | clang::Token &FirstToken); | ||||
33 | }; | ||||
Shih-wei Liao | 9ef2f78 | 2010-10-01 12:31:37 -0700 | [diff] [blame] | 34 | } |
Shih-wei Liao | 462aefd | 2010-06-04 15:32:04 -0700 | [diff] [blame] | 35 | |
zonr | 6315f76 | 2010-10-05 15:35:14 +0800 | [diff] [blame] | 36 | #endif // _SLANG_COMPILER_PRAGMA_HANDLER_H |