MCPcopy Create free account
hub / github.com/dfranx/ShaderDebugger / Preprocessor

Class Preprocessor

libs/wgtcc/cpp.h:60–157  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58
59
60 class Preprocessor {
61 public:
62 Preprocessor()
63 : curLine_(1), lineLine_(0), curCond_(true) {
64 // Add predefined
65 Init();
66 }
67
68 ~Preprocessor() {}
69 void Finalize(TokenSequence os);
70 void Process(const std::string& src, const std::string& fname, TokenSequence& os);
71 void Expand(TokenSequence& os, TokenSequence is, bool inCond = false);
72 void Subst(TokenSequence& os, TokenSequence is,
73 bool leadingWS, const HideSet& hs, ParamMap& params);
74 void Glue(TokenSequence& os, TokenSequence is);
75 void Glue(TokenSequence& os, const Token* tok);
76 const Token* Stringize(TokenSequence is);
77 void Stringize(std::string& str, TokenSequence is);
78 const Token* ParseActualParam(TokenSequence& is, Macro* macro, ParamMap& paramMap);
79 int GetDirective(TokenSequence& is);
80 const Token* EvalDefOp(TokenSequence& is);
81 void ReplaceIdent(TokenSequence& is);
82 void ParseDirective(TokenSequence& os, TokenSequence& is, int directive);
83 void ParseIf(TokenSequence ls);
84 void ParseIfdef(TokenSequence ls);
85 void ParseIfndef(TokenSequence ls);
86 void ParseElif(TokenSequence ls);
87 void ParseElse(TokenSequence ls);
88 void ParseEndif(TokenSequence ls);
89 void ParseInclude(TokenSequence& is, TokenSequence ls);
90 void ParseDef(TokenSequence ls);
91 void ParseUndef(TokenSequence ls);
92 void ParseVersion(TokenSequence ls);
93 void ParseLine(TokenSequence ls);
94 void ParseError(TokenSequence ls);
95 void ParsePragma(TokenSequence ls);
96 void IncludeFile(TokenSequence& is, const std::string* filename);
97 void IncludeSource(TokenSequence& is, const std::string* src, const std::string* filename);
98 bool ParseIdentList(ParamList& params, TokenSequence& is);
99
100 inline const MacroMap& GetMacroList() { return macroMap_; }
101
102 Macro* FindMacro(const std::string& name) {
103 auto res = macroMap_.find(name);
104 if (res == macroMap_.end())
105 return nullptr;
106 return &res->second;
107 }
108
109 void AddMacro(const std::string& name,
110 std::string* text, bool preDef = false);
111
112 void AddMacro(const std::string& name, const Macro& macro) {
113 auto res = macroMap_.find(name);
114 if (res != macroMap_.end()) {
115 // TODO(wgtdkp): give warning
116 macroMap_.erase(res);
117 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected