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()
     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