class AdLint::Cpp::VaFunctionLikeMacro
Public Instance Methods
expand(toks, macro_tbl, repl_ctxt)
click to toggle source
Calls superclass method
AdLint::Cpp::FunctionLikeMacro#expand
# File lib/adlint/cpp/macro.rb, line 407 def expand(toks, macro_tbl, repl_ctxt) super all_args, * = parse_arguments(toks, 1) args = all_args.shift(@parameter_names.size) rest_args = all_args args_hash = @parameter_names.zip(args).each_with_object({}) { |(param, arg), hash| hash[param] = arg } va_args = args_hash["__VA_ARGS__"] = [] unless rest_args.empty? va_args.concat(rest_args.shift) rest_args.each do |arg| va_args.push(ReplacedToken.new(:PP_TOKEN, ",", Location.new)) va_args.concat(arg) end end rslt_toks = expand_replacement_list(args_hash, toks.first.location, macro_tbl, repl_ctxt) macro_tbl.notify_function_like_macro_replacement(self, toks, args, rslt_toks) rslt_toks end
replaceable_size(toks)
click to toggle source
# File lib/adlint/cpp/macro.rb, line 398 def replaceable_size(toks) if name.value == toks.first.value args, idx = parse_arguments(toks, 1) args ? idx + 1 : 0 else 0 end end