User Guide
var_usage_visitor.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2023 Blue Brain Project, EPFL.
3  * See the top-level LICENSE file for details.
4  *
5  * SPDX-License-Identifier: Apache-2.0
6  */
7 
9 
10 #include <utility>
11 
12 #include "ast/name.hpp"
13 
14 
15 namespace nmodl {
16 namespace visitor {
17 
18 /// rename matching variable
20  const auto& name = node.get_node_name();
21  if (name == var_name) {
22  used = true;
23  }
24 }
25 
26 bool VarUsageVisitor::variable_used(const ast::Node& node, std::string name) {
27  used = false;
28  var_name = std::move(name);
29  node.visit_children(*this);
30  return used;
31 }
32 
33 } // namespace visitor
34 } // namespace nmodl
nmodl::ast::Node
Base class for all AST node.
Definition: node.hpp:40
nmodl
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
name.hpp
Auto generated AST classes declaration.
var_usage_visitor.hpp
Check if variable is used in given block.
nmodl::visitor::VarUsageVisitor::visit_name
void visit_name(const ast::Name &node) override
rename matching variable
Definition: var_usage_visitor.cpp:19
nmodl::ast::Node::visit_children
virtual void visit_children(visitor::Visitor &v) override
visit children i.e.
Definition: ast.cpp:322
nmodl::visitor::VarUsageVisitor::var_name
std::string var_name
variable to check usage
Definition: var_usage_visitor.hpp:38
nmodl::visitor::VarUsageVisitor::used
bool used
Definition: var_usage_visitor.hpp:39
nmodl::ast::Name::get_node_name
std::string get_node_name() const override
Return name of the node.
Definition: ast.cpp:791
nmodl::ast::Name
Represents a name.
Definition: name.hpp:44
nmodl::visitor::VarUsageVisitor::variable_used
bool variable_used(const ast::Node &node, std::string name)
Definition: var_usage_visitor.cpp:26