Lines Matching refs:macro
133 const Macro& macro = iter->second; in lex() local
134 if (macro.disabled) in lex()
140 if ((macro.type == Macro::kTypeFunc) && !isNextTokenLeftParen()) in lex()
147 pushMacro(macro, *token); in lex()
203 bool MacroExpander::pushMacro(const Macro& macro, const Token& identifier) in pushMacro() argument
205 assert(!macro.disabled); in pushMacro()
208 assert(identifier.text == macro.name); in pushMacro()
211 if (!expandMacro(macro, identifier, &replacements)) in pushMacro()
215 macro.disabled = true; in pushMacro()
218 context->macro = ¯o; in pushMacro()
232 assert(context->macro->disabled); in popMacro()
233 context->macro->disabled = false; in popMacro()
237 bool MacroExpander::expandMacro(const Macro& macro, in expandMacro() argument
242 if (macro.type == Macro::kTypeObj) in expandMacro()
244 replacements->assign(macro.replacements.begin(), in expandMacro()
245 macro.replacements.end()); in expandMacro()
247 if (macro.predefined) in expandMacro()
254 if (macro.name == kLine) in expandMacro()
260 else if (macro.name == kFile) in expandMacro()
270 assert(macro.type == Macro::kTypeFunc); in expandMacro()
272 args.reserve(macro.parameters.size()); in expandMacro()
273 if (!collectMacroArgs(macro, identifier, &args)) in expandMacro()
276 replaceMacroParams(macro, args, replacements); in expandMacro()
294 bool MacroExpander::collectMacroArgs(const Macro& macro, in collectMacroArgs() argument
347 const Macro::Parameters& params = macro.parameters; in collectMacroArgs()
356 Diagnostics::ID id = args->size() < macro.parameters.size() ? in collectMacroArgs()
383 void MacroExpander::replaceMacroParams(const Macro& macro, in replaceMacroParams() argument
387 for (size_t i = 0; i < macro.replacements.size(); ++i) in replaceMacroParams()
389 const Token& repl = macro.replacements[i]; in replaceMacroParams()
400 macro.parameters.begin(), macro.parameters.end(), repl.text); in replaceMacroParams()
401 if (iter == macro.parameters.end()) in replaceMacroParams()
407 size_t iArg = std::distance(macro.parameters.begin(), iter); in replaceMacroParams()