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() 30 : predefined(false), 31 disabled(false), 32 type(kTypeObj) 33 { 34 } 35 bool equals(const Macro &other) const; 36 37 bool predefined; 38 mutable bool disabled; 39 40 Type type; 41 std::string name; 42 Parameters parameters; 43 Replacements replacements; 44 }; 45 46 typedef std::map<std::string, Macro> MacroSet; 47 48 } // namespace pp 49 #endif // COMPILER_PREPROCESSOR_MACRO_H_ 50