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_ 45