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
8
#include "
visitors/var_usage_visitor.hpp
"
9
10
#include <utility>
11
12
#include "
ast/name.hpp
"
13
14
15
namespace
nmodl
{
16
namespace
visitor {
17
18
/// rename matching variable
19
void
VarUsageVisitor::visit_name
(
const
ast::Name
& node) {
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
void visit_children(visitor::Visitor &v) override
visit children i.e.
Definition:
ast.cpp:326
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:795
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
src
visitors
var_usage_visitor.cpp