|
1 // |
|
2 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. |
|
3 // Use of this source code is governed by a BSD-style license that can be |
|
4 // found in the LICENSE file. |
|
5 // |
|
6 |
|
7 #ifndef COMPILER_PREPROCESSOR_MACRO_H_ |
|
8 #define COMPILER_PREPROCESSOR_MACRO_H_ |
|
9 |
|
10 #include <map> |
|
11 #include <string> |
|
12 #include <vector> |
|
13 |
|
14 namespace pp |
|
15 { |
|
16 |
|
17 struct Token; |
|
18 |
|
19 struct Macro |
|
20 { |
|
21 enum Type |
|
22 { |
|
23 kTypeObj, |
|
24 kTypeFunc |
|
25 }; |
|
26 typedef std::vector<std::string> Parameters; |
|
27 typedef std::vector<Token> Replacements; |
|
28 |
|
29 Macro() : predefined(false), disabled(false), type(kTypeObj) { } |
|
30 bool equals(const Macro& other) const; |
|
31 |
|
32 bool predefined; |
|
33 mutable bool disabled; |
|
34 |
|
35 Type type; |
|
36 std::string name; |
|
37 Parameters parameters; |
|
38 Replacements replacements; |
|
39 }; |
|
40 |
|
41 typedef std::map<std::string, Macro> MacroSet; |
|
42 |
|
43 } // namespace pp |
|
44 #endif // COMPILER_PREPROCESSOR_MACRO_H_ |