Home | History | Annotate | Download | only in preprocessor
      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