User Guide
lookup_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 ///
9 /// THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.
10 ///
11 
12 #pragma once
13 
14 /**
15  * \file
16  * \brief \copybrief nmodl::visitor::AstLookupVisitor
17  */
18 
19 #include "visitors/visitor.hpp"
20 
21 namespace nmodl {
22 namespace visitor {
23 
24 /**
25  * \addtogroup visitor_classes
26  * \{
27  */
28 
29 /**
30  * \class AstLookupVisitor
31  * \brief %Visitor to find AST nodes based on their types
32  */
33 template <typename DefaultVisitor>
34 class MetaAstLookupVisitor: public DefaultVisitor {
35  static const bool is_const_visitor = std::is_same<ConstVisitor, DefaultVisitor>::value;
36 
37  template <typename T>
38  struct identity {
39  using type = T;
40  };
41 
42  template <typename T>
43  using visit_arg_trait =
44  typename std::conditional<is_const_visitor, std::add_const<T>, identity<T>>::type;
46  using nodes_t = std::vector<std::shared_ptr<ast_t>>;
47 
48  private:
49  /// node types to search in the ast
50  std::vector<ast::AstNodeType> types;
51 
52  /// matching nodes found in the ast
53  std::vector<std::shared_ptr<ast_t>> nodes;
54 
55  public:
56  MetaAstLookupVisitor() = default;
57 
59  : types{type} {}
60 
61  MetaAstLookupVisitor(const std::vector<ast::AstNodeType>& types)
62  : types(types) {}
63 
64  const nodes_t& lookup(ast_t& node);
65 
66  const nodes_t& lookup(ast_t& node, ast::AstNodeType type);
67 
68  const nodes_t& lookup(ast_t& node, const std::vector<ast::AstNodeType>& t_types);
69 
70  const nodes_t& get_nodes() const noexcept {
71  return nodes;
72  }
73 
74  void clear() {
75  types.clear();
76  nodes.clear();
77  }
78 
79  protected:
80  // clang-format off
81  void visit_node(typename visit_arg_trait<ast::Node>::type& node) override;
82  void visit_statement(typename visit_arg_trait<ast::Statement>::type& node) override;
83  void visit_expression(typename visit_arg_trait<ast::Expression>::type& node) override;
84  void visit_block(typename visit_arg_trait<ast::Block>::type& node) override;
85  void visit_identifier(typename visit_arg_trait<ast::Identifier>::type& node) override;
86  void visit_number(typename visit_arg_trait<ast::Number>::type& node) override;
87  void visit_string(typename visit_arg_trait<ast::String>::type& node) override;
88  void visit_integer(typename visit_arg_trait<ast::Integer>::type& node) override;
89  void visit_float(typename visit_arg_trait<ast::Float>::type& node) override;
90  void visit_double(typename visit_arg_trait<ast::Double>::type& node) override;
91  void visit_boolean(typename visit_arg_trait<ast::Boolean>::type& node) override;
92  void visit_name(typename visit_arg_trait<ast::Name>::type& node) override;
93  void visit_prime_name(typename visit_arg_trait<ast::PrimeName>::type& node) override;
94  void visit_indexed_name(typename visit_arg_trait<ast::IndexedName>::type& node) override;
95  void visit_var_name(typename visit_arg_trait<ast::VarName>::type& node) override;
96  void visit_argument(typename visit_arg_trait<ast::Argument>::type& node) override;
97  void visit_react_var_name(typename visit_arg_trait<ast::ReactVarName>::type& node) override;
98  void visit_read_ion_var(typename visit_arg_trait<ast::ReadIonVar>::type& node) override;
99  void visit_write_ion_var(typename visit_arg_trait<ast::WriteIonVar>::type& node) override;
100  void visit_nonspecific_cur_var(typename visit_arg_trait<ast::NonspecificCurVar>::type& node) override;
101  void visit_electrode_cur_var(typename visit_arg_trait<ast::ElectrodeCurVar>::type& node) override;
102  void visit_range_var(typename visit_arg_trait<ast::RangeVar>::type& node) override;
103  void visit_global_var(typename visit_arg_trait<ast::GlobalVar>::type& node) override;
104  void visit_pointer_var(typename visit_arg_trait<ast::PointerVar>::type& node) override;
105  void visit_random_var(typename visit_arg_trait<ast::RandomVar>::type& node) override;
106  void visit_bbcore_pointer_var(typename visit_arg_trait<ast::BbcorePointerVar>::type& node) override;
107  void visit_extern_var(typename visit_arg_trait<ast::ExternVar>::type& node) override;
108  void visit_param_block(typename visit_arg_trait<ast::ParamBlock>::type& node) override;
109  void visit_independent_block(typename visit_arg_trait<ast::IndependentBlock>::type& node) override;
110  void visit_assigned_block(typename visit_arg_trait<ast::AssignedBlock>::type& node) override;
111  void visit_state_block(typename visit_arg_trait<ast::StateBlock>::type& node) override;
112  void visit_initial_block(typename visit_arg_trait<ast::InitialBlock>::type& node) override;
113  void visit_constructor_block(typename visit_arg_trait<ast::ConstructorBlock>::type& node) override;
114  void visit_destructor_block(typename visit_arg_trait<ast::DestructorBlock>::type& node) override;
115  void visit_statement_block(typename visit_arg_trait<ast::StatementBlock>::type& node) override;
116  void visit_derivative_block(typename visit_arg_trait<ast::DerivativeBlock>::type& node) override;
117  void visit_linear_block(typename visit_arg_trait<ast::LinearBlock>::type& node) override;
118  void visit_non_linear_block(typename visit_arg_trait<ast::NonLinearBlock>::type& node) override;
119  void visit_discrete_block(typename visit_arg_trait<ast::DiscreteBlock>::type& node) override;
120  void visit_function_table_block(typename visit_arg_trait<ast::FunctionTableBlock>::type& node) override;
121  void visit_function_block(typename visit_arg_trait<ast::FunctionBlock>::type& node) override;
122  void visit_procedure_block(typename visit_arg_trait<ast::ProcedureBlock>::type& node) override;
123  void visit_net_receive_block(typename visit_arg_trait<ast::NetReceiveBlock>::type& node) override;
124  void visit_solve_block(typename visit_arg_trait<ast::SolveBlock>::type& node) override;
125  void visit_breakpoint_block(typename visit_arg_trait<ast::BreakpointBlock>::type& node) override;
126  void visit_before_block(typename visit_arg_trait<ast::BeforeBlock>::type& node) override;
127  void visit_after_block(typename visit_arg_trait<ast::AfterBlock>::type& node) override;
128  void visit_ba_block(typename visit_arg_trait<ast::BABlock>::type& node) override;
129  void visit_for_netcon(typename visit_arg_trait<ast::ForNetcon>::type& node) override;
130  void visit_kinetic_block(typename visit_arg_trait<ast::KineticBlock>::type& node) override;
131  void visit_unit_block(typename visit_arg_trait<ast::UnitBlock>::type& node) override;
132  void visit_constant_block(typename visit_arg_trait<ast::ConstantBlock>::type& node) override;
133  void visit_neuron_block(typename visit_arg_trait<ast::NeuronBlock>::type& node) override;
134  void visit_unit(typename visit_arg_trait<ast::Unit>::type& node) override;
135  void visit_double_unit(typename visit_arg_trait<ast::DoubleUnit>::type& node) override;
136  void visit_local_var(typename visit_arg_trait<ast::LocalVar>::type& node) override;
137  void visit_limits(typename visit_arg_trait<ast::Limits>::type& node) override;
138  void visit_number_range(typename visit_arg_trait<ast::NumberRange>::type& node) override;
139  void visit_constant_var(typename visit_arg_trait<ast::ConstantVar>::type& node) override;
140  void visit_binary_operator(typename visit_arg_trait<ast::BinaryOperator>::type& node) override;
141  void visit_unary_operator(typename visit_arg_trait<ast::UnaryOperator>::type& node) override;
142  void visit_reaction_operator(typename visit_arg_trait<ast::ReactionOperator>::type& node) override;
143  void visit_paren_expression(typename visit_arg_trait<ast::ParenExpression>::type& node) override;
144  void visit_binary_expression(typename visit_arg_trait<ast::BinaryExpression>::type& node) override;
145  void visit_diff_eq_expression(typename visit_arg_trait<ast::DiffEqExpression>::type& node) override;
146  void visit_unary_expression(typename visit_arg_trait<ast::UnaryExpression>::type& node) override;
147  void visit_non_lin_equation(typename visit_arg_trait<ast::NonLinEquation>::type& node) override;
148  void visit_lin_equation(typename visit_arg_trait<ast::LinEquation>::type& node) override;
149  void visit_function_call(typename visit_arg_trait<ast::FunctionCall>::type& node) override;
150  void visit_watch(typename visit_arg_trait<ast::Watch>::type& node) override;
151  void visit_ba_block_type(typename visit_arg_trait<ast::BABlockType>::type& node) override;
152  void visit_unit_def(typename visit_arg_trait<ast::UnitDef>::type& node) override;
153  void visit_factor_def(typename visit_arg_trait<ast::FactorDef>::type& node) override;
154  void visit_valence(typename visit_arg_trait<ast::Valence>::type& node) override;
155  void visit_unit_state(typename visit_arg_trait<ast::UnitState>::type& node) override;
156  void visit_local_list_statement(typename visit_arg_trait<ast::LocalListStatement>::type& node) override;
157  void visit_model(typename visit_arg_trait<ast::Model>::type& node) override;
158  void visit_define(typename visit_arg_trait<ast::Define>::type& node) override;
159  void visit_include(typename visit_arg_trait<ast::Include>::type& node) override;
160  void visit_param_assign(typename visit_arg_trait<ast::ParamAssign>::type& node) override;
161  void visit_assigned_definition(typename visit_arg_trait<ast::AssignedDefinition>::type& node) override;
162  void visit_conductance_hint(typename visit_arg_trait<ast::ConductanceHint>::type& node) override;
163  void visit_expression_statement(typename visit_arg_trait<ast::ExpressionStatement>::type& node) override;
164  void visit_protect_statement(typename visit_arg_trait<ast::ProtectStatement>::type& node) override;
165  void visit_from_statement(typename visit_arg_trait<ast::FromStatement>::type& node) override;
166  void visit_while_statement(typename visit_arg_trait<ast::WhileStatement>::type& node) override;
167  void visit_if_statement(typename visit_arg_trait<ast::IfStatement>::type& node) override;
168  void visit_else_if_statement(typename visit_arg_trait<ast::ElseIfStatement>::type& node) override;
169  void visit_else_statement(typename visit_arg_trait<ast::ElseStatement>::type& node) override;
170  void visit_watch_statement(typename visit_arg_trait<ast::WatchStatement>::type& node) override;
171  void visit_mutex_lock(typename visit_arg_trait<ast::MutexLock>::type& node) override;
172  void visit_mutex_unlock(typename visit_arg_trait<ast::MutexUnlock>::type& node) override;
173  void visit_conserve(typename visit_arg_trait<ast::Conserve>::type& node) override;
174  void visit_compartment(typename visit_arg_trait<ast::Compartment>::type& node) override;
175  void visit_lon_difuse(typename visit_arg_trait<ast::LonDifuse>::type& node) override;
176  void visit_reaction_statement(typename visit_arg_trait<ast::ReactionStatement>::type& node) override;
177  void visit_lag_statement(typename visit_arg_trait<ast::LagStatement>::type& node) override;
178  void visit_constant_statement(typename visit_arg_trait<ast::ConstantStatement>::type& node) override;
179  void visit_table_statement(typename visit_arg_trait<ast::TableStatement>::type& node) override;
180  void visit_suffix(typename visit_arg_trait<ast::Suffix>::type& node) override;
181  void visit_useion(typename visit_arg_trait<ast::Useion>::type& node) override;
182  void visit_nonspecific(typename visit_arg_trait<ast::Nonspecific>::type& node) override;
183  void visit_electrode_current(typename visit_arg_trait<ast::ElectrodeCurrent>::type& node) override;
184  void visit_range(typename visit_arg_trait<ast::Range>::type& node) override;
185  void visit_global(typename visit_arg_trait<ast::Global>::type& node) override;
186  void visit_random_var_list(typename visit_arg_trait<ast::RandomVarList>::type& node) override;
187  void visit_pointer(typename visit_arg_trait<ast::Pointer>::type& node) override;
188  void visit_bbcore_pointer(typename visit_arg_trait<ast::BbcorePointer>::type& node) override;
189  void visit_external(typename visit_arg_trait<ast::External>::type& node) override;
190  void visit_thread_safe(typename visit_arg_trait<ast::ThreadSafe>::type& node) override;
191  void visit_verbatim(typename visit_arg_trait<ast::Verbatim>::type& node) override;
192  void visit_line_comment(typename visit_arg_trait<ast::LineComment>::type& node) override;
193  void visit_block_comment(typename visit_arg_trait<ast::BlockComment>::type& node) override;
194  void visit_ontology_statement(typename visit_arg_trait<ast::OntologyStatement>::type& node) override;
195  void visit_program(typename visit_arg_trait<ast::Program>::type& node) override;
196  void visit_nrn_state_block(typename visit_arg_trait<ast::NrnStateBlock>::type& node) override;
197  void visit_eigen_newton_solver_block(typename visit_arg_trait<ast::EigenNewtonSolverBlock>::type& node) override;
198  void visit_eigen_linear_solver_block(typename visit_arg_trait<ast::EigenLinearSolverBlock>::type& node) override;
199  void visit_wrapped_expression(typename visit_arg_trait<ast::WrappedExpression>::type& node) override;
200  void visit_derivimplicit_callback(typename visit_arg_trait<ast::DerivimplicitCallback>::type& node) override;
201  void visit_solution_expression(typename visit_arg_trait<ast::SolutionExpression>::type& node) override;
202  void visit_update_dt(typename visit_arg_trait<ast::UpdateDt>::type& node) override;
203  // clang-format on
204 };
205 
208 
209 // explicit template instantiation declarations
210 extern template class MetaAstLookupVisitor<Visitor>;
211 extern template class MetaAstLookupVisitor<ConstVisitor>;
212 
213 /** \} */ // end of visitor_classes
214 
215 } // namespace visitor
216 } // namespace nmodl
217 
nmodl::visitor::MetaAstLookupVisitor::visit_lag_statement
void visit_lag_statement(typename visit_arg_trait< ast::LagStatement >::type &node) override
Definition: lookup_visitor.cpp:793
nmodl::visitor::MetaAstLookupVisitor::visit_derivimplicit_callback
void visit_derivimplicit_callback(typename visit_arg_trait< ast::DerivimplicitCallback >::type &node) override
Definition: lookup_visitor.cpp:977
nmodl::visitor::MetaAstLookupVisitor::get_nodes
const nodes_t & get_nodes() const noexcept
Definition: lookup_visitor.hpp:70
nmodl::visitor::MetaAstLookupVisitor::visit_lon_difuse
void visit_lon_difuse(typename visit_arg_trait< ast::LonDifuse >::type &node) override
Definition: lookup_visitor.cpp:777
nmodl::visitor::MetaAstLookupVisitor::visit_pointer_var
void visit_pointer_var(typename visit_arg_trait< ast::PointerVar >::type &node) override
Definition: lookup_visitor.cpp:209
nmodl::visitor::MetaAstLookupVisitor::visit_else_statement
void visit_else_statement(typename visit_arg_trait< ast::ElseStatement >::type &node) override
Definition: lookup_visitor.cpp:729
nmodl::visitor::MetaAstLookupVisitor::visit_assigned_definition
void visit_assigned_definition(typename visit_arg_trait< ast::AssignedDefinition >::type &node) override
Definition: lookup_visitor.cpp:665
nmodl::visitor::MetaAstLookupVisitor::visit_kinetic_block
void visit_kinetic_block(typename visit_arg_trait< ast::KineticBlock >::type &node) override
Definition: lookup_visitor.cpp:417
nmodl::visitor::MetaAstLookupVisitor::visit_range_var
void visit_range_var(typename visit_arg_trait< ast::RangeVar >::type &node) override
Definition: lookup_visitor.cpp:193
nmodl::visitor::MetaAstLookupVisitor::visit_line_comment
void visit_line_comment(typename visit_arg_trait< ast::LineComment >::type &node) override
Definition: lookup_visitor.cpp:913
nmodl::visitor::MetaAstLookupVisitor::visit_function_block
void visit_function_block(typename visit_arg_trait< ast::FunctionBlock >::type &node) override
Definition: lookup_visitor.cpp:345
nmodl::visitor::MetaAstLookupVisitor::visit_constructor_block
void visit_constructor_block(typename visit_arg_trait< ast::ConstructorBlock >::type &node) override
Definition: lookup_visitor.cpp:281
nmodl::visitor::MetaAstLookupVisitor::visit_verbatim
void visit_verbatim(typename visit_arg_trait< ast::Verbatim >::type &node) override
Definition: lookup_visitor.cpp:905
nmodl::visitor::MetaAstLookupVisitor::visit_unit_state
void visit_unit_state(typename visit_arg_trait< ast::UnitState >::type &node) override
Definition: lookup_visitor.cpp:617
nmodl::visitor::MetaAstLookupVisitor::nodes_t
std::vector< std::shared_ptr< ast_t > > nodes_t
Definition: lookup_visitor.hpp:46
nmodl::visitor::MetaAstLookupVisitor::visit_linear_block
void visit_linear_block(typename visit_arg_trait< ast::LinearBlock >::type &node) override
Definition: lookup_visitor.cpp:313
nmodl::visitor::MetaAstLookupVisitor::visit_boolean
void visit_boolean(typename visit_arg_trait< ast::Boolean >::type &node) override
Definition: lookup_visitor.cpp:105
nmodl::visitor::MetaAstLookupVisitor::visit_pointer
void visit_pointer(typename visit_arg_trait< ast::Pointer >::type &node) override
Definition: lookup_visitor.cpp:873
nmodl::visitor::MetaAstLookupVisitor::visit_expression_statement
void visit_expression_statement(typename visit_arg_trait< ast::ExpressionStatement >::type &node) override
Definition: lookup_visitor.cpp:681
nmodl::visitor::MetaAstLookupVisitor::visit_ontology_statement
void visit_ontology_statement(typename visit_arg_trait< ast::OntologyStatement >::type &node) override
Definition: lookup_visitor.cpp:929
nmodl::visitor::MetaAstLookupVisitor::visit_independent_block
void visit_independent_block(typename visit_arg_trait< ast::IndependentBlock >::type &node) override
Definition: lookup_visitor.cpp:249
nmodl::visitor::MetaAstLookupVisitor::visit_ba_block_type
void visit_ba_block_type(typename visit_arg_trait< ast::BABlockType >::type &node) override
Definition: lookup_visitor.cpp:585
nmodl::visitor::MetaAstLookupVisitor::visit_non_lin_equation
void visit_non_lin_equation(typename visit_arg_trait< ast::NonLinEquation >::type &node) override
Definition: lookup_visitor.cpp:553
nmodl::visitor::MetaAstLookupVisitor::MetaAstLookupVisitor
MetaAstLookupVisitor()=default
nmodl::visitor::MetaAstLookupVisitor::visit_local_list_statement
void visit_local_list_statement(typename visit_arg_trait< ast::LocalListStatement >::type &node) override
Definition: lookup_visitor.cpp:625
nmodl::visitor::MetaAstLookupVisitor::visit_state_block
void visit_state_block(typename visit_arg_trait< ast::StateBlock >::type &node) override
Definition: lookup_visitor.cpp:265
nmodl::visitor::MetaAstLookupVisitor::visit_read_ion_var
void visit_read_ion_var(typename visit_arg_trait< ast::ReadIonVar >::type &node) override
Definition: lookup_visitor.cpp:161
nmodl::visitor::MetaAstLookupVisitor::ast_t
typename visit_arg_trait< ast::Ast >::type ast_t
Definition: lookup_visitor.hpp:45
nmodl
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
nmodl::visitor::MetaAstLookupVisitor::visit_before_block
void visit_before_block(typename visit_arg_trait< ast::BeforeBlock >::type &node) override
Definition: lookup_visitor.cpp:385
nmodl::visitor::MetaAstLookupVisitor::visit_function_call
void visit_function_call(typename visit_arg_trait< ast::FunctionCall >::type &node) override
Definition: lookup_visitor.cpp:569
nmodl::visitor::MetaAstLookupVisitor::visit_compartment
void visit_compartment(typename visit_arg_trait< ast::Compartment >::type &node) override
Definition: lookup_visitor.cpp:769
nmodl::visitor::MetaAstLookupVisitor::visit_expression
void visit_expression(typename visit_arg_trait< ast::Expression >::type &node) override
Definition: lookup_visitor.cpp:41
nmodl::visitor::MetaAstLookupVisitor::visit_else_if_statement
void visit_else_if_statement(typename visit_arg_trait< ast::ElseIfStatement >::type &node) override
Definition: lookup_visitor.cpp:721
nmodl::visitor::MetaAstLookupVisitor::clear
void clear()
Definition: lookup_visitor.hpp:74
nmodl::visitor::MetaAstLookupVisitor::visit_define
void visit_define(typename visit_arg_trait< ast::Define >::type &node) override
Definition: lookup_visitor.cpp:641
nmodl::visitor::MetaAstLookupVisitor::visit_unit_block
void visit_unit_block(typename visit_arg_trait< ast::UnitBlock >::type &node) override
Definition: lookup_visitor.cpp:425
nmodl::visitor::MetaAstLookupVisitor::visit_useion
void visit_useion(typename visit_arg_trait< ast::Useion >::type &node) override
Definition: lookup_visitor.cpp:825
nmodl::visitor::MetaAstLookupVisitor::visit_global_var
void visit_global_var(typename visit_arg_trait< ast::GlobalVar >::type &node) override
Definition: lookup_visitor.cpp:201
nmodl::visitor::MetaAstLookupVisitor::nodes
std::vector< std::shared_ptr< ast_t > > nodes
matching nodes found in the ast
Definition: lookup_visitor.hpp:53
nmodl::visitor::MetaAstLookupVisitor::visit_unary_operator
void visit_unary_operator(typename visit_arg_trait< ast::UnaryOperator >::type &node) override
Definition: lookup_visitor.cpp:505
nmodl::visitor::MetaAstLookupVisitor::visit_local_var
void visit_local_var(typename visit_arg_trait< ast::LocalVar >::type &node) override
Definition: lookup_visitor.cpp:465
nmodl::visitor::MetaAstLookupVisitor::identity
Definition: lookup_visitor.hpp:38
visitor.hpp
nmodl::visitor::MetaAstLookupVisitor::visit_ba_block
void visit_ba_block(typename visit_arg_trait< ast::BABlock >::type &node) override
Definition: lookup_visitor.cpp:401
nmodl::visitor::MetaAstLookupVisitor::visit_neuron_block
void visit_neuron_block(typename visit_arg_trait< ast::NeuronBlock >::type &node) override
Definition: lookup_visitor.cpp:441
nmodl::visitor::MetaAstLookupVisitor::visit_model
void visit_model(typename visit_arg_trait< ast::Model >::type &node) override
Definition: lookup_visitor.cpp:633
nmodl::visitor::MetaAstLookupVisitor::visit_after_block
void visit_after_block(typename visit_arg_trait< ast::AfterBlock >::type &node) override
Definition: lookup_visitor.cpp:393
nmodl::ast::AstNodeType
AstNodeType
Enum type for every AST node type.
Definition: ast_decl.hpp:164
nmodl::visitor::MetaAstLookupVisitor::visit_global
void visit_global(typename visit_arg_trait< ast::Global >::type &node) override
Definition: lookup_visitor.cpp:857
nmodl::visitor::MetaAstLookupVisitor::visit_if_statement
void visit_if_statement(typename visit_arg_trait< ast::IfStatement >::type &node) override
Definition: lookup_visitor.cpp:713
nmodl::visitor::MetaAstLookupVisitor::visit_nonspecific
void visit_nonspecific(typename visit_arg_trait< ast::Nonspecific >::type &node) override
Definition: lookup_visitor.cpp:833
nmodl::visitor::MetaAstLookupVisitor::visit_limits
void visit_limits(typename visit_arg_trait< ast::Limits >::type &node) override
Definition: lookup_visitor.cpp:473
nmodl::visitor::MetaAstLookupVisitor::visit_factor_def
void visit_factor_def(typename visit_arg_trait< ast::FactorDef >::type &node) override
Definition: lookup_visitor.cpp:601
nmodl::visitor::MetaAstLookupVisitor::visit_net_receive_block
void visit_net_receive_block(typename visit_arg_trait< ast::NetReceiveBlock >::type &node) override
Definition: lookup_visitor.cpp:361
nmodl::visitor::MetaAstLookupVisitor::MetaAstLookupVisitor
MetaAstLookupVisitor(ast::AstNodeType type)
Definition: lookup_visitor.hpp:58
nmodl::visitor::MetaAstLookupVisitor::visit_range
void visit_range(typename visit_arg_trait< ast::Range >::type &node) override
Definition: lookup_visitor.cpp:849
nmodl::visitor::MetaAstLookupVisitor::visit_non_linear_block
void visit_non_linear_block(typename visit_arg_trait< ast::NonLinearBlock >::type &node) override
Definition: lookup_visitor.cpp:321
nmodl::visitor::MetaAstLookupVisitor::visit_thread_safe
void visit_thread_safe(typename visit_arg_trait< ast::ThreadSafe >::type &node) override
Definition: lookup_visitor.cpp:897
nmodl::visitor::MetaAstLookupVisitor::visit_var_name
void visit_var_name(typename visit_arg_trait< ast::VarName >::type &node) override
Definition: lookup_visitor.cpp:137
nmodl::visitor::MetaAstLookupVisitor::visit_react_var_name
void visit_react_var_name(typename visit_arg_trait< ast::ReactVarName >::type &node) override
Definition: lookup_visitor.cpp:153
nmodl::visitor::MetaAstLookupVisitor::visit_wrapped_expression
void visit_wrapped_expression(typename visit_arg_trait< ast::WrappedExpression >::type &node) override
Definition: lookup_visitor.cpp:969
nmodl::visitor::MetaAstLookupVisitor::visit_constant_statement
void visit_constant_statement(typename visit_arg_trait< ast::ConstantStatement >::type &node) override
Definition: lookup_visitor.cpp:801
nmodl::visitor::MetaAstLookupVisitor::visit_solve_block
void visit_solve_block(typename visit_arg_trait< ast::SolveBlock >::type &node) override
Definition: lookup_visitor.cpp:369
nmodl::visitor::MetaAstLookupVisitor::visit_reaction_operator
void visit_reaction_operator(typename visit_arg_trait< ast::ReactionOperator >::type &node) override
Definition: lookup_visitor.cpp:513
nmodl::visitor::MetaAstLookupVisitor::visit_prime_name
void visit_prime_name(typename visit_arg_trait< ast::PrimeName >::type &node) override
Definition: lookup_visitor.cpp:121
nmodl::visitor::MetaAstLookupVisitor::visit_watch_statement
void visit_watch_statement(typename visit_arg_trait< ast::WatchStatement >::type &node) override
Definition: lookup_visitor.cpp:737
nmodl::visitor::MetaAstLookupVisitor::visit_protect_statement
void visit_protect_statement(typename visit_arg_trait< ast::ProtectStatement >::type &node) override
Definition: lookup_visitor.cpp:689
nmodl::visitor::MetaAstLookupVisitor::visit_initial_block
void visit_initial_block(typename visit_arg_trait< ast::InitialBlock >::type &node) override
Definition: lookup_visitor.cpp:273
nmodl::visitor::MetaAstLookupVisitor::visit_random_var_list
void visit_random_var_list(typename visit_arg_trait< ast::RandomVarList >::type &node) override
Definition: lookup_visitor.cpp:865
nmodl::visitor::MetaAstLookupVisitor::lookup
const nodes_t & lookup(ast_t &node)
nmodl::visitor::MetaAstLookupVisitor::visit_discrete_block
void visit_discrete_block(typename visit_arg_trait< ast::DiscreteBlock >::type &node) override
Definition: lookup_visitor.cpp:329
nmodl::visitor::MetaAstLookupVisitor::visit_program
void visit_program(typename visit_arg_trait< ast::Program >::type &node) override
Definition: lookup_visitor.cpp:937
nmodl::visitor::MetaAstLookupVisitor::visit_constant_block
void visit_constant_block(typename visit_arg_trait< ast::ConstantBlock >::type &node) override
Definition: lookup_visitor.cpp:433
nmodl::visitor::MetaAstLookupVisitor::visit_block_comment
void visit_block_comment(typename visit_arg_trait< ast::BlockComment >::type &node) override
Definition: lookup_visitor.cpp:921
nmodl::visitor::MetaAstLookupVisitor::visit_external
void visit_external(typename visit_arg_trait< ast::External >::type &node) override
Definition: lookup_visitor.cpp:889
nmodl::visitor::MetaAstLookupVisitor::visit_number_range
void visit_number_range(typename visit_arg_trait< ast::NumberRange >::type &node) override
Definition: lookup_visitor.cpp:481
nmodl::visitor::MetaAstLookupVisitor::visit_statement
void visit_statement(typename visit_arg_trait< ast::Statement >::type &node) override
Definition: lookup_visitor.cpp:33
nmodl::visitor::MetaAstLookupVisitor::visit_electrode_current
void visit_electrode_current(typename visit_arg_trait< ast::ElectrodeCurrent >::type &node) override
Definition: lookup_visitor.cpp:841
nmodl::visitor::MetaAstLookupVisitor::visit_binary_operator
void visit_binary_operator(typename visit_arg_trait< ast::BinaryOperator >::type &node) override
Definition: lookup_visitor.cpp:497
nmodl::visitor::MetaAstLookupVisitor::visit_write_ion_var
void visit_write_ion_var(typename visit_arg_trait< ast::WriteIonVar >::type &node) override
Definition: lookup_visitor.cpp:169
nmodl::visitor::MetaAstLookupVisitor::visit_include
void visit_include(typename visit_arg_trait< ast::Include >::type &node) override
Definition: lookup_visitor.cpp:649
nmodl::visitor::MetaAstLookupVisitor::visit_for_netcon
void visit_for_netcon(typename visit_arg_trait< ast::ForNetcon >::type &node) override
Definition: lookup_visitor.cpp:409
nmodl::visitor::MetaAstLookupVisitor::visit_destructor_block
void visit_destructor_block(typename visit_arg_trait< ast::DestructorBlock >::type &node) override
Definition: lookup_visitor.cpp:289
nmodl::visitor::MetaAstLookupVisitor::visit_assigned_block
void visit_assigned_block(typename visit_arg_trait< ast::AssignedBlock >::type &node) override
Definition: lookup_visitor.cpp:257
nmodl::visitor::MetaAstLookupVisitor::visit_node
void visit_node(typename visit_arg_trait< ast::Node >::type &node) override
Definition: lookup_visitor.cpp:25
nmodl::visitor::MetaAstLookupVisitor::visit_name
void visit_name(typename visit_arg_trait< ast::Name >::type &node) override
Definition: lookup_visitor.cpp:113
nmodl::visitor::MetaAstLookupVisitor::visit_bbcore_pointer_var
void visit_bbcore_pointer_var(typename visit_arg_trait< ast::BbcorePointerVar >::type &node) override
Definition: lookup_visitor.cpp:225
nmodl::visitor::MetaAstLookupVisitor::visit_derivative_block
void visit_derivative_block(typename visit_arg_trait< ast::DerivativeBlock >::type &node) override
Definition: lookup_visitor.cpp:305
nmodl::visitor::MetaAstLookupVisitor::visit_unary_expression
void visit_unary_expression(typename visit_arg_trait< ast::UnaryExpression >::type &node) override
Definition: lookup_visitor.cpp:545
nmodl::visitor::MetaAstLookupVisitor::visit_block
void visit_block(typename visit_arg_trait< ast::Block >::type &node) override
Definition: lookup_visitor.cpp:49
nmodl::visitor::MetaAstLookupVisitor::visit_solution_expression
void visit_solution_expression(typename visit_arg_trait< ast::SolutionExpression >::type &node) override
Definition: lookup_visitor.cpp:985
nmodl::visitor::MetaAstLookupVisitor::visit_paren_expression
void visit_paren_expression(typename visit_arg_trait< ast::ParenExpression >::type &node) override
Definition: lookup_visitor.cpp:521
nmodl::visitor::MetaAstLookupVisitor::types
std::vector< ast::AstNodeType > types
node types to search in the ast
Definition: lookup_visitor.hpp:50
nmodl::visitor::MetaAstLookupVisitor::visit_while_statement
void visit_while_statement(typename visit_arg_trait< ast::WhileStatement >::type &node) override
Definition: lookup_visitor.cpp:705
nmodl::visitor::MetaAstLookupVisitor::MetaAstLookupVisitor
MetaAstLookupVisitor(const std::vector< ast::AstNodeType > &types)
Definition: lookup_visitor.hpp:61
nmodl::visitor::MetaAstLookupVisitor::visit_update_dt
void visit_update_dt(typename visit_arg_trait< ast::UpdateDt >::type &node) override
Definition: lookup_visitor.cpp:993
nmodl::visitor::MetaAstLookupVisitor::is_const_visitor
static const bool is_const_visitor
Definition: lookup_visitor.hpp:35
nmodl::visitor::MetaAstLookupVisitor::visit_indexed_name
void visit_indexed_name(typename visit_arg_trait< ast::IndexedName >::type &node) override
Definition: lookup_visitor.cpp:129
nmodl::visitor::MetaAstLookupVisitor::visit_lin_equation
void visit_lin_equation(typename visit_arg_trait< ast::LinEquation >::type &node) override
Definition: lookup_visitor.cpp:561
nmodl::visitor::MetaAstLookupVisitor::identity::type
T type
Definition: lookup_visitor.hpp:39
nmodl::visitor::MetaAstLookupVisitor::visit_electrode_cur_var
void visit_electrode_cur_var(typename visit_arg_trait< ast::ElectrodeCurVar >::type &node) override
Definition: lookup_visitor.cpp:185
nmodl::visitor::MetaAstLookupVisitor::visit_unit
void visit_unit(typename visit_arg_trait< ast::Unit >::type &node) override
Definition: lookup_visitor.cpp:449
nmodl::visitor::MetaAstLookupVisitor::visit_function_table_block
void visit_function_table_block(typename visit_arg_trait< ast::FunctionTableBlock >::type &node) override
Definition: lookup_visitor.cpp:337
nmodl::visitor::MetaAstLookupVisitor::visit_identifier
void visit_identifier(typename visit_arg_trait< ast::Identifier >::type &node) override
Definition: lookup_visitor.cpp:57
nmodl::visitor::MetaAstLookupVisitor::visit_string
void visit_string(typename visit_arg_trait< ast::String >::type &node) override
Definition: lookup_visitor.cpp:73
nmodl::visitor::MetaAstLookupVisitor::visit_bbcore_pointer
void visit_bbcore_pointer(typename visit_arg_trait< ast::BbcorePointer >::type &node) override
Definition: lookup_visitor.cpp:881
nmodl::visitor::MetaAstLookupVisitor::visit_mutex_lock
void visit_mutex_lock(typename visit_arg_trait< ast::MutexLock >::type &node) override
Definition: lookup_visitor.cpp:745
nmodl::visitor::MetaAstLookupVisitor::visit_nonspecific_cur_var
void visit_nonspecific_cur_var(typename visit_arg_trait< ast::NonspecificCurVar >::type &node) override
Definition: lookup_visitor.cpp:177
nmodl::visitor::MetaAstLookupVisitor::visit_param_block
void visit_param_block(typename visit_arg_trait< ast::ParamBlock >::type &node) override
Definition: lookup_visitor.cpp:241
nmodl::visitor::MetaAstLookupVisitor::visit_double_unit
void visit_double_unit(typename visit_arg_trait< ast::DoubleUnit >::type &node) override
Definition: lookup_visitor.cpp:457
nmodl::visitor::MetaAstLookupVisitor::visit_integer
void visit_integer(typename visit_arg_trait< ast::Integer >::type &node) override
Definition: lookup_visitor.cpp:81
nmodl::visitor::MetaAstLookupVisitor::visit_mutex_unlock
void visit_mutex_unlock(typename visit_arg_trait< ast::MutexUnlock >::type &node) override
Definition: lookup_visitor.cpp:753
nmodl::visitor::MetaAstLookupVisitor::visit_breakpoint_block
void visit_breakpoint_block(typename visit_arg_trait< ast::BreakpointBlock >::type &node) override
Definition: lookup_visitor.cpp:377
nmodl::visitor::MetaAstLookupVisitor::visit_diff_eq_expression
void visit_diff_eq_expression(typename visit_arg_trait< ast::DiffEqExpression >::type &node) override
Definition: lookup_visitor.cpp:537
nmodl::visitor::MetaAstLookupVisitor::visit_procedure_block
void visit_procedure_block(typename visit_arg_trait< ast::ProcedureBlock >::type &node) override
Definition: lookup_visitor.cpp:353
nmodl::visitor::MetaAstLookupVisitor::visit_nrn_state_block
void visit_nrn_state_block(typename visit_arg_trait< ast::NrnStateBlock >::type &node) override
Definition: lookup_visitor.cpp:945
nmodl::visitor::MetaAstLookupVisitor::visit_number
void visit_number(typename visit_arg_trait< ast::Number >::type &node) override
Definition: lookup_visitor.cpp:65
nmodl::visitor::MetaAstLookupVisitor::visit_extern_var
void visit_extern_var(typename visit_arg_trait< ast::ExternVar >::type &node) override
Definition: lookup_visitor.cpp:233
nmodl::visitor::MetaAstLookupVisitor::visit_param_assign
void visit_param_assign(typename visit_arg_trait< ast::ParamAssign >::type &node) override
Definition: lookup_visitor.cpp:657
nmodl::visitor::MetaAstLookupVisitor::visit_arg_trait
typename std::conditional< is_const_visitor, std::add_const< T >, identity< T > >::type visit_arg_trait
Definition: lookup_visitor.hpp:44
nmodl::visitor::MetaAstLookupVisitor::visit_double
void visit_double(typename visit_arg_trait< ast::Double >::type &node) override
Definition: lookup_visitor.cpp:97
nmodl::visitor::MetaAstLookupVisitor::visit_eigen_linear_solver_block
void visit_eigen_linear_solver_block(typename visit_arg_trait< ast::EigenLinearSolverBlock >::type &node) override
Definition: lookup_visitor.cpp:961
nmodl::visitor::MetaAstLookupVisitor::visit_binary_expression
void visit_binary_expression(typename visit_arg_trait< ast::BinaryExpression >::type &node) override
Definition: lookup_visitor.cpp:529
nmodl::visitor::MetaAstLookupVisitor::visit_conductance_hint
void visit_conductance_hint(typename visit_arg_trait< ast::ConductanceHint >::type &node) override
Definition: lookup_visitor.cpp:673
nmodl::visitor::MetaAstLookupVisitor::visit_eigen_newton_solver_block
void visit_eigen_newton_solver_block(typename visit_arg_trait< ast::EigenNewtonSolverBlock >::type &node) override
Definition: lookup_visitor.cpp:953
nmodl::visitor::MetaAstLookupVisitor::visit_random_var
void visit_random_var(typename visit_arg_trait< ast::RandomVar >::type &node) override
Definition: lookup_visitor.cpp:217
nmodl::visitor::MetaAstLookupVisitor::visit_float
void visit_float(typename visit_arg_trait< ast::Float >::type &node) override
Definition: lookup_visitor.cpp:89
nmodl::visitor::MetaAstLookupVisitor::visit_conserve
void visit_conserve(typename visit_arg_trait< ast::Conserve >::type &node) override
Definition: lookup_visitor.cpp:761
nmodl::visitor::MetaAstLookupVisitor::visit_argument
void visit_argument(typename visit_arg_trait< ast::Argument >::type &node) override
Definition: lookup_visitor.cpp:145
nmodl::visitor::MetaAstLookupVisitor::visit_table_statement
void visit_table_statement(typename visit_arg_trait< ast::TableStatement >::type &node) override
Definition: lookup_visitor.cpp:809
nmodl::visitor::MetaAstLookupVisitor::visit_unit_def
void visit_unit_def(typename visit_arg_trait< ast::UnitDef >::type &node) override
Definition: lookup_visitor.cpp:593
nmodl::visitor::MetaAstLookupVisitor::visit_statement_block
void visit_statement_block(typename visit_arg_trait< ast::StatementBlock >::type &node) override
Definition: lookup_visitor.cpp:297
nmodl::visitor::MetaAstLookupVisitor::visit_suffix
void visit_suffix(typename visit_arg_trait< ast::Suffix >::type &node) override
Definition: lookup_visitor.cpp:817
nmodl::visitor::MetaAstLookupVisitor::visit_reaction_statement
void visit_reaction_statement(typename visit_arg_trait< ast::ReactionStatement >::type &node) override
Definition: lookup_visitor.cpp:785
nmodl::visitor::MetaAstLookupVisitor::visit_valence
void visit_valence(typename visit_arg_trait< ast::Valence >::type &node) override
Definition: lookup_visitor.cpp:609
nmodl::visitor::MetaAstLookupVisitor::visit_constant_var
void visit_constant_var(typename visit_arg_trait< ast::ConstantVar >::type &node) override
Definition: lookup_visitor.cpp:489
nmodl::visitor::MetaAstLookupVisitor::visit_watch
void visit_watch(typename visit_arg_trait< ast::Watch >::type &node) override
Definition: lookup_visitor.cpp:577
nmodl::visitor::MetaAstLookupVisitor
Definition: lookup_visitor.hpp:34
nmodl::visitor::MetaAstLookupVisitor::visit_from_statement
void visit_from_statement(typename visit_arg_trait< ast::FromStatement >::type &node) override
Definition: lookup_visitor.cpp:697