User Guide
rename_function_arguments.cpp
Go to the documentation of this file.
2 
3 #include "rename_visitor.hpp"
4 
5 namespace nmodl {
6 namespace visitor {
7 
8 template <class Block>
10  auto parameters = block.get_parameters();
11  auto parameter_names = std::vector<std::string>{};
12 
13  for (const auto& parameter: parameters) {
14  parameter_names.push_back(parameter->get_node_name());
15  }
16 
17  for (const auto& parameter_name: parameter_names) {
18  auto v = RenameVisitor(parameter_name, "_l" + parameter_name);
19  block.accept(v);
20  }
21 }
22 
24  rename_arguments(block);
25 }
26 
28  rename_arguments(block);
29 }
30 
31 } // namespace visitor
32 } // namespace nmodl
nmodl::visitor::RenameFunctionArgumentsVisitor::visit_procedure_block
void visit_procedure_block(ast::ProcedureBlock &block) override
visit node of type ast::ProcedureBlock
Definition: rename_function_arguments.cpp:27
nmodl::ast::FunctionBlock
TODO.
Definition: function_block.hpp:39
nmodl
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
rename_function_arguments.hpp
nmodl::ast::Block
Base class for all block scoped nodes.
Definition: block.hpp:41
nmodl::visitor::RenameVisitor
Blindly rename given variable to new name
Definition: rename_visitor.hpp:43
nmodl::visitor::RenameFunctionArgumentsVisitor::rename_arguments
void rename_arguments(Block &block) const
Definition: rename_function_arguments.cpp:9
nmodl::visitor::RenameFunctionArgumentsVisitor::visit_function_block
void visit_function_block(ast::FunctionBlock &block) override
visit node of type ast::FunctionBlock
Definition: rename_function_arguments.cpp:23
nmodl::ast::ProcedureBlock
TODO.
Definition: procedure_block.hpp:39
rename_visitor.hpp
Blindly rename given variable to new name
nmodl::ast::Block::get_parameters
virtual const ArgumentVector & get_parameters() const
Definition: block.hpp:50
nmodl::ast::Block::accept
void accept(visitor::Visitor &v) override
accept (or visit) the current AST node using provided visitor
Definition: ast.cpp:398