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 14namespace pp 15{ 16 17struct Token; 18 19struct 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 46typedef std::map<std::string, Macro> MacroSet; 47 48} // namespace pp 49#endif // COMPILER_PREPROCESSOR_MACRO_H_ 50