User Guide
var_usage_visitor.hpp
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 #pragma once
9 
10 /**
11  * \file
12  * \brief \copybrief nmodl::visitor::VarUsageVisitor
13  */
14 
15 #include <string>
16 
17 #include "visitors/ast_visitor.hpp"
18 
19 
20 namespace nmodl {
21 namespace visitor {
22 
23 /**
24  * \addtogroup visitor_classes
25  * \{
26  */
27 
28 /**
29  * \class VarUsageVisitor
30  * \brief Check if variable is used in given block
31  *
32  * \todo Check if macro is considered as variable
33  */
34 
35 class VarUsageVisitor: protected ConstAstVisitor {
36  private:
37  /// variable to check usage
38  std::string var_name;
39  bool used = false;
40 
41  void visit_name(const ast::Name& node) override;
42 
43  public:
44  VarUsageVisitor() = default;
45 
46  bool variable_used(const ast::Node& node, std::string name);
47 };
48 
49 /** \} */ // end of visitor_classes
50 
51 } // namespace visitor
52 } // namespace nmodl
nmodl::ast::Node
Base class for all AST node.
Definition: node.hpp:40
nmodl::visitor::ConstAstVisitor
Concrete constant visitor for all AST classes.
Definition: ast_visitor.hpp:166
nmodl::visitor::VarUsageVisitor::VarUsageVisitor
VarUsageVisitor()=default
nmodl
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
nmodl::visitor::VarUsageVisitor
Check if variable is used in given block.
Definition: var_usage_visitor.hpp:35
nmodl::visitor::VarUsageVisitor::visit_name
void visit_name(const ast::Name &node) override
rename matching variable
Definition: var_usage_visitor.cpp:19
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
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
ast_visitor.hpp
Concrete visitor for all AST classes.