NEURON
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 #include "ast/ast_decl.hpp"
15 
16 namespace nmodl {
17 /// Implementation of different AST visitors
18 namespace visitor {
19 
20 /**
21  * \defgroup visitor Visitor Implementation
22  * \brief All visitors related implementation details
23  *
24  * \defgroup visitor_classes Visitors
25  * \ingroup visitor
26  * \brief Different visitors implemented in NMODL
27  * \{
28  */
29 
30 /**
31  * \brief Abstract base class for all visitors implementation
32  *
33  * This class defines interface for all concrete visitors implementation.
34  * Note that this class only provides interface that could be implemented
35  * by concrete visitors like ast::AstVisitor.
36  *
37  * \sa ast::AstVisitor
38  */
39 class Visitor {
40  public:
41  virtual ~Visitor() = default;
42 
43  /// visit node of type ast::Node
44  virtual void visit_node(ast::Node& node) = 0;
45  /// visit node of type ast::Statement
46  virtual void visit_statement(ast::Statement& node) = 0;
47  /// visit node of type ast::Expression
49  /// visit node of type ast::Block
50  virtual void visit_block(ast::Block& node) = 0;
51  /// visit node of type ast::Identifier
53  /// visit node of type ast::Number
54  virtual void visit_number(ast::Number& node) = 0;
55  /// visit node of type ast::String
56  virtual void visit_string(ast::String& node) = 0;
57  /// visit node of type ast::Integer
58  virtual void visit_integer(ast::Integer& node) = 0;
59  /// visit node of type ast::Float
60  virtual void visit_float(ast::Float& node) = 0;
61  /// visit node of type ast::Double
62  virtual void visit_double(ast::Double& node) = 0;
63  /// visit node of type ast::Boolean
64  virtual void visit_boolean(ast::Boolean& node) = 0;
65  /// visit node of type ast::Name
66  virtual void visit_name(ast::Name& node) = 0;
67  /// visit node of type ast::PrimeName
68  virtual void visit_prime_name(ast::PrimeName& node) = 0;
69  /// visit node of type ast::IndexedName
71  /// visit node of type ast::VarName
72  virtual void visit_var_name(ast::VarName& node) = 0;
73  /// visit node of type ast::Argument
74  virtual void visit_argument(ast::Argument& node) = 0;
75  /// visit node of type ast::ReactVarName
77  /// visit node of type ast::ReadIonVar
79  /// visit node of type ast::WriteIonVar
81  /// visit node of type ast::NonspecificCurVar
83  /// visit node of type ast::ElectrodeCurVar
85  /// visit node of type ast::RangeVar
86  virtual void visit_range_var(ast::RangeVar& node) = 0;
87  /// visit node of type ast::GlobalVar
88  virtual void visit_global_var(ast::GlobalVar& node) = 0;
89  /// visit node of type ast::PointerVar
91  /// visit node of type ast::RandomVar
92  virtual void visit_random_var(ast::RandomVar& node) = 0;
93  /// visit node of type ast::BbcorePointerVar
95  /// visit node of type ast::ExternVar
96  virtual void visit_extern_var(ast::ExternVar& node) = 0;
97  /// visit node of type ast::ParamBlock
99  /// visit node of type ast::IndependentBlock
101  /// visit node of type ast::AssignedBlock
103  /// visit node of type ast::StateBlock
105  /// visit node of type ast::InitialBlock
107  /// visit node of type ast::ConstructorBlock
109  /// visit node of type ast::DestructorBlock
111  /// visit node of type ast::StatementBlock
113  /// visit node of type ast::DerivativeBlock
115  /// visit node of type ast::LinearBlock
117  /// visit node of type ast::NonLinearBlock
119  /// visit node of type ast::DiscreteBlock
121  /// visit node of type ast::FunctionTableBlock
123  /// visit node of type ast::FunctionBlock
125  /// visit node of type ast::ProcedureBlock
127  /// visit node of type ast::NetReceiveBlock
129  /// visit node of type ast::SolveBlock
131  /// visit node of type ast::BreakpointBlock
133  /// visit node of type ast::BeforeBlock
135  /// visit node of type ast::AfterBlock
137  /// visit node of type ast::BABlock
138  virtual void visit_ba_block(ast::BABlock& node) = 0;
139  /// visit node of type ast::ForNetcon
141  /// visit node of type ast::KineticBlock
143  /// visit node of type ast::UnitBlock
145  /// visit node of type ast::ConstantBlock
147  /// visit node of type ast::NeuronBlock
149  /// visit node of type ast::Unit
150  virtual void visit_unit(ast::Unit& node) = 0;
151  /// visit node of type ast::DoubleUnit
153  /// visit node of type ast::LocalVar
154  virtual void visit_local_var(ast::LocalVar& node) = 0;
155  /// visit node of type ast::Limits
156  virtual void visit_limits(ast::Limits& node) = 0;
157  /// visit node of type ast::NumberRange
159  /// visit node of type ast::ConstantVar
161  /// visit node of type ast::BinaryOperator
163  /// visit node of type ast::UnaryOperator
165  /// visit node of type ast::ReactionOperator
167  /// visit node of type ast::ParenExpression
169  /// visit node of type ast::BinaryExpression
171  /// visit node of type ast::DiffEqExpression
173  /// visit node of type ast::UnaryExpression
175  /// visit node of type ast::NonLinEquation
177  /// visit node of type ast::LinEquation
179  /// visit node of type ast::FunctionCall
181  /// visit node of type ast::Watch
182  virtual void visit_watch(ast::Watch& node) = 0;
183  /// visit node of type ast::BABlockType
185  /// visit node of type ast::UnitDef
186  virtual void visit_unit_def(ast::UnitDef& node) = 0;
187  /// visit node of type ast::FactorDef
189  /// visit node of type ast::Valence
190  virtual void visit_valence(ast::Valence& node) = 0;
191  /// visit node of type ast::UnitState
193  /// visit node of type ast::LocalListStatement
195  /// visit node of type ast::Model
196  virtual void visit_model(ast::Model& node) = 0;
197  /// visit node of type ast::Define
198  virtual void visit_define(ast::Define& node) = 0;
199  /// visit node of type ast::Include
200  virtual void visit_include(ast::Include& node) = 0;
201  /// visit node of type ast::ParamAssign
203  /// visit node of type ast::AssignedDefinition
205  /// visit node of type ast::ConductanceHint
207  /// visit node of type ast::ExpressionStatement
209  /// visit node of type ast::ProtectStatement
211  /// visit node of type ast::FromStatement
213  /// visit node of type ast::WhileStatement
215  /// visit node of type ast::IfStatement
217  /// visit node of type ast::ElseIfStatement
219  /// visit node of type ast::ElseStatement
221  /// visit node of type ast::WatchStatement
223  /// visit node of type ast::MutexLock
225  /// visit node of type ast::MutexUnlock
227  /// visit node of type ast::Conserve
228  virtual void visit_conserve(ast::Conserve& node) = 0;
229  /// visit node of type ast::Compartment
231  /// visit node of type ast::LonDiffuse
233  /// visit node of type ast::ReactionStatement
235  /// visit node of type ast::LagStatement
237  /// visit node of type ast::ConstantStatement
239  /// visit node of type ast::TableStatement
241  /// visit node of type ast::Suffix
242  virtual void visit_suffix(ast::Suffix& node) = 0;
243  /// visit node of type ast::Useion
244  virtual void visit_useion(ast::Useion& node) = 0;
245  /// visit node of type ast::Nonspecific
247  /// visit node of type ast::ElectrodeCurrent
249  /// visit node of type ast::Range
250  virtual void visit_range(ast::Range& node) = 0;
251  /// visit node of type ast::Global
252  virtual void visit_global(ast::Global& node) = 0;
253  /// visit node of type ast::RandomVarList
255  /// visit node of type ast::Pointer
256  virtual void visit_pointer(ast::Pointer& node) = 0;
257  /// visit node of type ast::BbcorePointer
259  /// visit node of type ast::External
260  virtual void visit_external(ast::External& node) = 0;
261  /// visit node of type ast::ThreadSafe
263  /// visit node of type ast::Verbatim
264  virtual void visit_verbatim(ast::Verbatim& node) = 0;
265  /// visit node of type ast::LineComment
267  /// visit node of type ast::BlockComment
269  /// visit node of type ast::OntologyStatement
271  /// visit node of type ast::Program
272  virtual void visit_program(ast::Program& node) = 0;
273  /// visit node of type ast::NrnStateBlock
275  /// visit node of type ast::EigenNewtonSolverBlock
277  /// visit node of type ast::EigenLinearSolverBlock
279  /// visit node of type ast::CvodeBlock
281  /// visit node of type ast::LongitudinalDiffusionBlock
283  /// visit node of type ast::WrappedExpression
285  /// visit node of type ast::DerivimplicitCallback
287  /// visit node of type ast::SolutionExpression
289  /// visit node of type ast::UpdateDt
290  virtual void visit_update_dt(ast::UpdateDt& node) = 0;
291 };
292 
293 /**
294  * \brief Abstract base class for all constant visitors implementation
295  *
296  * This class defines interface for all concrete constant visitors implementation.
297  * Note that this class only provides interface that could be implemented
298  * by concrete visitors like ast::ConstAstVisitor.
299  *
300  * \sa ast::ConstAstVisitor
301  */
303  public:
304  virtual ~ConstVisitor() = default;
305 
306  /// visit node of type ast::Node
307  virtual void visit_node(const ast::Node& node) = 0;
308  /// visit node of type ast::Statement
309  virtual void visit_statement(const ast::Statement& node) = 0;
310  /// visit node of type ast::Expression
311  virtual void visit_expression(const ast::Expression& node) = 0;
312  /// visit node of type ast::Block
313  virtual void visit_block(const ast::Block& node) = 0;
314  /// visit node of type ast::Identifier
315  virtual void visit_identifier(const ast::Identifier& node) = 0;
316  /// visit node of type ast::Number
317  virtual void visit_number(const ast::Number& node) = 0;
318  /// visit node of type ast::String
319  virtual void visit_string(const ast::String& node) = 0;
320  /// visit node of type ast::Integer
321  virtual void visit_integer(const ast::Integer& node) = 0;
322  /// visit node of type ast::Float
323  virtual void visit_float(const ast::Float& node) = 0;
324  /// visit node of type ast::Double
325  virtual void visit_double(const ast::Double& node) = 0;
326  /// visit node of type ast::Boolean
327  virtual void visit_boolean(const ast::Boolean& node) = 0;
328  /// visit node of type ast::Name
329  virtual void visit_name(const ast::Name& node) = 0;
330  /// visit node of type ast::PrimeName
331  virtual void visit_prime_name(const ast::PrimeName& node) = 0;
332  /// visit node of type ast::IndexedName
333  virtual void visit_indexed_name(const ast::IndexedName& node) = 0;
334  /// visit node of type ast::VarName
335  virtual void visit_var_name(const ast::VarName& node) = 0;
336  /// visit node of type ast::Argument
337  virtual void visit_argument(const ast::Argument& node) = 0;
338  /// visit node of type ast::ReactVarName
339  virtual void visit_react_var_name(const ast::ReactVarName& node) = 0;
340  /// visit node of type ast::ReadIonVar
341  virtual void visit_read_ion_var(const ast::ReadIonVar& node) = 0;
342  /// visit node of type ast::WriteIonVar
343  virtual void visit_write_ion_var(const ast::WriteIonVar& node) = 0;
344  /// visit node of type ast::NonspecificCurVar
346  /// visit node of type ast::ElectrodeCurVar
348  /// visit node of type ast::RangeVar
349  virtual void visit_range_var(const ast::RangeVar& node) = 0;
350  /// visit node of type ast::GlobalVar
351  virtual void visit_global_var(const ast::GlobalVar& node) = 0;
352  /// visit node of type ast::PointerVar
353  virtual void visit_pointer_var(const ast::PointerVar& node) = 0;
354  /// visit node of type ast::RandomVar
355  virtual void visit_random_var(const ast::RandomVar& node) = 0;
356  /// visit node of type ast::BbcorePointerVar
358  /// visit node of type ast::ExternVar
359  virtual void visit_extern_var(const ast::ExternVar& node) = 0;
360  /// visit node of type ast::ParamBlock
361  virtual void visit_param_block(const ast::ParamBlock& node) = 0;
362  /// visit node of type ast::IndependentBlock
364  /// visit node of type ast::AssignedBlock
365  virtual void visit_assigned_block(const ast::AssignedBlock& node) = 0;
366  /// visit node of type ast::StateBlock
367  virtual void visit_state_block(const ast::StateBlock& node) = 0;
368  /// visit node of type ast::InitialBlock
369  virtual void visit_initial_block(const ast::InitialBlock& node) = 0;
370  /// visit node of type ast::ConstructorBlock
372  /// visit node of type ast::DestructorBlock
374  /// visit node of type ast::StatementBlock
376  /// visit node of type ast::DerivativeBlock
378  /// visit node of type ast::LinearBlock
379  virtual void visit_linear_block(const ast::LinearBlock& node) = 0;
380  /// visit node of type ast::NonLinearBlock
382  /// visit node of type ast::DiscreteBlock
383  virtual void visit_discrete_block(const ast::DiscreteBlock& node) = 0;
384  /// visit node of type ast::FunctionTableBlock
386  /// visit node of type ast::FunctionBlock
387  virtual void visit_function_block(const ast::FunctionBlock& node) = 0;
388  /// visit node of type ast::ProcedureBlock
390  /// visit node of type ast::NetReceiveBlock
392  /// visit node of type ast::SolveBlock
393  virtual void visit_solve_block(const ast::SolveBlock& node) = 0;
394  /// visit node of type ast::BreakpointBlock
396  /// visit node of type ast::BeforeBlock
397  virtual void visit_before_block(const ast::BeforeBlock& node) = 0;
398  /// visit node of type ast::AfterBlock
399  virtual void visit_after_block(const ast::AfterBlock& node) = 0;
400  /// visit node of type ast::BABlock
401  virtual void visit_ba_block(const ast::BABlock& node) = 0;
402  /// visit node of type ast::ForNetcon
403  virtual void visit_for_netcon(const ast::ForNetcon& node) = 0;
404  /// visit node of type ast::KineticBlock
405  virtual void visit_kinetic_block(const ast::KineticBlock& node) = 0;
406  /// visit node of type ast::UnitBlock
407  virtual void visit_unit_block(const ast::UnitBlock& node) = 0;
408  /// visit node of type ast::ConstantBlock
409  virtual void visit_constant_block(const ast::ConstantBlock& node) = 0;
410  /// visit node of type ast::NeuronBlock
411  virtual void visit_neuron_block(const ast::NeuronBlock& node) = 0;
412  /// visit node of type ast::Unit
413  virtual void visit_unit(const ast::Unit& node) = 0;
414  /// visit node of type ast::DoubleUnit
415  virtual void visit_double_unit(const ast::DoubleUnit& node) = 0;
416  /// visit node of type ast::LocalVar
417  virtual void visit_local_var(const ast::LocalVar& node) = 0;
418  /// visit node of type ast::Limits
419  virtual void visit_limits(const ast::Limits& node) = 0;
420  /// visit node of type ast::NumberRange
421  virtual void visit_number_range(const ast::NumberRange& node) = 0;
422  /// visit node of type ast::ConstantVar
423  virtual void visit_constant_var(const ast::ConstantVar& node) = 0;
424  /// visit node of type ast::BinaryOperator
426  /// visit node of type ast::UnaryOperator
427  virtual void visit_unary_operator(const ast::UnaryOperator& node) = 0;
428  /// visit node of type ast::ReactionOperator
430  /// visit node of type ast::ParenExpression
432  /// visit node of type ast::BinaryExpression
434  /// visit node of type ast::DiffEqExpression
436  /// visit node of type ast::UnaryExpression
438  /// visit node of type ast::NonLinEquation
440  /// visit node of type ast::LinEquation
441  virtual void visit_lin_equation(const ast::LinEquation& node) = 0;
442  /// visit node of type ast::FunctionCall
443  virtual void visit_function_call(const ast::FunctionCall& node) = 0;
444  /// visit node of type ast::Watch
445  virtual void visit_watch(const ast::Watch& node) = 0;
446  /// visit node of type ast::BABlockType
447  virtual void visit_ba_block_type(const ast::BABlockType& node) = 0;
448  /// visit node of type ast::UnitDef
449  virtual void visit_unit_def(const ast::UnitDef& node) = 0;
450  /// visit node of type ast::FactorDef
451  virtual void visit_factor_def(const ast::FactorDef& node) = 0;
452  /// visit node of type ast::Valence
453  virtual void visit_valence(const ast::Valence& node) = 0;
454  /// visit node of type ast::UnitState
455  virtual void visit_unit_state(const ast::UnitState& node) = 0;
456  /// visit node of type ast::LocalListStatement
458  /// visit node of type ast::Model
459  virtual void visit_model(const ast::Model& node) = 0;
460  /// visit node of type ast::Define
461  virtual void visit_define(const ast::Define& node) = 0;
462  /// visit node of type ast::Include
463  virtual void visit_include(const ast::Include& node) = 0;
464  /// visit node of type ast::ParamAssign
465  virtual void visit_param_assign(const ast::ParamAssign& node) = 0;
466  /// visit node of type ast::AssignedDefinition
468  /// visit node of type ast::ConductanceHint
470  /// visit node of type ast::ExpressionStatement
472  /// visit node of type ast::ProtectStatement
474  /// visit node of type ast::FromStatement
475  virtual void visit_from_statement(const ast::FromStatement& node) = 0;
476  /// visit node of type ast::WhileStatement
478  /// visit node of type ast::IfStatement
479  virtual void visit_if_statement(const ast::IfStatement& node) = 0;
480  /// visit node of type ast::ElseIfStatement
482  /// visit node of type ast::ElseStatement
483  virtual void visit_else_statement(const ast::ElseStatement& node) = 0;
484  /// visit node of type ast::WatchStatement
486  /// visit node of type ast::MutexLock
487  virtual void visit_mutex_lock(const ast::MutexLock& node) = 0;
488  /// visit node of type ast::MutexUnlock
489  virtual void visit_mutex_unlock(const ast::MutexUnlock& node) = 0;
490  /// visit node of type ast::Conserve
491  virtual void visit_conserve(const ast::Conserve& node) = 0;
492  /// visit node of type ast::Compartment
493  virtual void visit_compartment(const ast::Compartment& node) = 0;
494  /// visit node of type ast::LonDiffuse
495  virtual void visit_lon_diffuse(const ast::LonDiffuse& node) = 0;
496  /// visit node of type ast::ReactionStatement
498  /// visit node of type ast::LagStatement
499  virtual void visit_lag_statement(const ast::LagStatement& node) = 0;
500  /// visit node of type ast::ConstantStatement
502  /// visit node of type ast::TableStatement
504  /// visit node of type ast::Suffix
505  virtual void visit_suffix(const ast::Suffix& node) = 0;
506  /// visit node of type ast::Useion
507  virtual void visit_useion(const ast::Useion& node) = 0;
508  /// visit node of type ast::Nonspecific
509  virtual void visit_nonspecific(const ast::Nonspecific& node) = 0;
510  /// visit node of type ast::ElectrodeCurrent
512  /// visit node of type ast::Range
513  virtual void visit_range(const ast::Range& node) = 0;
514  /// visit node of type ast::Global
515  virtual void visit_global(const ast::Global& node) = 0;
516  /// visit node of type ast::RandomVarList
518  /// visit node of type ast::Pointer
519  virtual void visit_pointer(const ast::Pointer& node) = 0;
520  /// visit node of type ast::BbcorePointer
521  virtual void visit_bbcore_pointer(const ast::BbcorePointer& node) = 0;
522  /// visit node of type ast::External
523  virtual void visit_external(const ast::External& node) = 0;
524  /// visit node of type ast::ThreadSafe
525  virtual void visit_thread_safe(const ast::ThreadSafe& node) = 0;
526  /// visit node of type ast::Verbatim
527  virtual void visit_verbatim(const ast::Verbatim& node) = 0;
528  /// visit node of type ast::LineComment
529  virtual void visit_line_comment(const ast::LineComment& node) = 0;
530  /// visit node of type ast::BlockComment
531  virtual void visit_block_comment(const ast::BlockComment& node) = 0;
532  /// visit node of type ast::OntologyStatement
534  /// visit node of type ast::Program
535  virtual void visit_program(const ast::Program& node) = 0;
536  /// visit node of type ast::NrnStateBlock
538  /// visit node of type ast::EigenNewtonSolverBlock
540  /// visit node of type ast::EigenLinearSolverBlock
542  /// visit node of type ast::CvodeBlock
543  virtual void visit_cvode_block(const ast::CvodeBlock& node) = 0;
544  /// visit node of type ast::LongitudinalDiffusionBlock
546  /// visit node of type ast::WrappedExpression
548  /// visit node of type ast::DerivimplicitCallback
550  /// visit node of type ast::SolutionExpression
552  /// visit node of type ast::UpdateDt
553  virtual void visit_update_dt(const ast::UpdateDt& node) = 0;
554 };
555 
556 /** \} */ // end of visitor_classes
557 
558 } // namespace visitor
559 } // namespace nmodl
THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.
Represents a AFTER block in NMODL.
Definition: after_block.hpp:51
Represents an argument to functions and procedures.
Definition: argument.hpp:48
Represents a ASSIGNED block in the NMODL.
Represents a statement in ASSIGNED or STATE block.
Represents a block to be executed before or after another block.
Definition: ba_block.hpp:40
Type to represent different block types for before/after block.
Represents BBCOREPOINTER statement in NMODL.
Represent a single variable of type BBCOREPOINTER.
Represents a BEFORE block in NMODL.
Represents binary expression in the NMODL.
Operator used in ast::BinaryExpression.
Represents a multi-line comment in NMODL.
Base class for all block scoped nodes.
Definition: block.hpp:41
Represents a boolean variable.
Definition: boolean.hpp:42
Represents a BREAKPOINT block in NMODL.
Represent COMPARTMENT statement in NMODL.
Definition: compartment.hpp:39
Represents CONDUCTANCE statement in NMODL.
Represent CONSERVE statement in NMODL.
Definition: conserve.hpp:38
Represent CONSTANT block in the mod file.
Represent statement in CONSTANT block of NMODL.
Represents a variable in the ast::ConstantBlock.
Represents a CONSTRUCTOR block in the NMODL.
Represents a block used for variable timestep integration (CVODE) of DERIVATIVE blocks.
Definition: cvode_block.hpp:38
Represents a DEFINE statement in NMODL.
Definition: define.hpp:38
Represents DERIVATIVE block in the NMODL.
Represent a callback to NEURON's derivimplicit solver.
Represents a DESTRUCTOR block in the NMODL.
Represents differential equation in DERIVATIVE block.
Represents a double variable.
Definition: double.hpp:53
Represent linear solver solution block based on Eigen.
Represent newton solver solution block based on Eigen.
Represents ELECTRODE_CURRENT variables statement in NMODL.
Base class for all expressions in the NMODL.
Definition: expression.hpp:43
This construct is deprecated and no longer supported in the NMODL.
Definition: external.hpp:39
Represents a float variable.
Definition: float.hpp:44
Represents GLOBAL statement in NMODL.
Definition: global.hpp:39
Base class for all identifiers.
Definition: identifier.hpp:41
Represents an INCLUDE statement in NMODL.
Definition: include.hpp:39
Represents a INDEPENDENT block in the NMODL.
Represents specific element of an array variable.
Represents a INITIAL block in the NMODL.
Represents an integer variable.
Definition: integer.hpp:49
Represents a LAG statement in the mod file.
One equation in a system of equations tha collectively form a LINEAR block.
Represents a one line comment in NMODL.
Represents LINEAR block in the NMODL.
Represent LONGITUDINAL_DIFFUSION statement in NMODL.
Definition: lon_diffuse.hpp:39
Extracts information required for LONGITUDINAL_DIFFUSION for each KINETIC block.
Represent MUTEXLOCK statement in NMODL.
Definition: mutex_lock.hpp:38
Represent MUTEXUNLOCK statement in NMODL.
Represents a name.
Definition: name.hpp:44
Represent NEURON block in the mod file.
Base class for all AST node.
Definition: node.hpp:40
One equation in a system of equations that collectively make a NONLINEAR block.
Represents NONLINEAR block in the NMODL.
Represents NONSPECIFIC_CURRENT variables statement in NMODL.
Definition: nonspecific.hpp:39
Represents the coreneuron nrn_state callback function.
Base class for all numbers.
Definition: number.hpp:39
Represents CURIE information in NMODL.
Represents a PARAMETER block in the NMODL.
Definition: param_block.hpp:53
Represents POINTER statement in NMODL.
Definition: pointer.hpp:39
Represents a prime variable (for ODE)
Definition: prime_name.hpp:48
Represents top level AST node for whole NMODL input.
Definition: program.hpp:39
Single variable of type RANDOM.
Definition: random_var.hpp:38
Represents RANDOM statement in NMODL.
Represents RANGE variables statement in NMODL.
Definition: range.hpp:39
Represent solution of a block in the AST.
Represents a STATE block in the NMODL.
Definition: state_block.hpp:52
Represents block encapsulating list of statements.
Represents a string.
Definition: string.hpp:52
Represents SUFFIX statement in NMODL.
Definition: suffix.hpp:38
Represents TABLE statement in NMODL.
Represents THREADSAFE statement in NMODL.
Definition: thread_safe.hpp:38
Statement to indicate a change in timestep in a given block.
Definition: update_dt.hpp:38
Represents USEION statement in NMODL.
Definition: useion.hpp:40
Represents a variable.
Definition: var_name.hpp:43
Represents a C code block.
Definition: verbatim.hpp:38
Represent WATCH statement in NMODL.
Wrap any other expression type.
Abstract base class for all constant visitors implementation.
Definition: visitor.hpp:302
virtual void visit_update_dt(const ast::UpdateDt &node)=0
visit node of type ast::UpdateDt
virtual void visit_independent_block(const ast::IndependentBlock &node)=0
visit node of type ast::IndependentBlock
virtual void visit_binary_operator(const ast::BinaryOperator &node)=0
visit node of type ast::BinaryOperator
virtual void visit_verbatim(const ast::Verbatim &node)=0
visit node of type ast::Verbatim
virtual void visit_include(const ast::Include &node)=0
visit node of type ast::Include
virtual void visit_unary_operator(const ast::UnaryOperator &node)=0
visit node of type ast::UnaryOperator
virtual void visit_reaction_operator(const ast::ReactionOperator &node)=0
visit node of type ast::ReactionOperator
virtual void visit_while_statement(const ast::WhileStatement &node)=0
visit node of type ast::WhileStatement
virtual void visit_constant_block(const ast::ConstantBlock &node)=0
visit node of type ast::ConstantBlock
virtual void visit_protect_statement(const ast::ProtectStatement &node)=0
visit node of type ast::ProtectStatement
virtual void visit_binary_expression(const ast::BinaryExpression &node)=0
visit node of type ast::BinaryExpression
virtual void visit_block_comment(const ast::BlockComment &node)=0
visit node of type ast::BlockComment
virtual void visit_thread_safe(const ast::ThreadSafe &node)=0
visit node of type ast::ThreadSafe
virtual void visit_kinetic_block(const ast::KineticBlock &node)=0
visit node of type ast::KineticBlock
virtual void visit_linear_block(const ast::LinearBlock &node)=0
visit node of type ast::LinearBlock
virtual void visit_factor_def(const ast::FactorDef &node)=0
visit node of type ast::FactorDef
virtual void visit_constant_var(const ast::ConstantVar &node)=0
visit node of type ast::ConstantVar
virtual void visit_useion(const ast::Useion &node)=0
visit node of type ast::Useion
virtual void visit_table_statement(const ast::TableStatement &node)=0
visit node of type ast::TableStatement
virtual void visit_indexed_name(const ast::IndexedName &node)=0
visit node of type ast::IndexedName
virtual void visit_net_receive_block(const ast::NetReceiveBlock &node)=0
visit node of type ast::NetReceiveBlock
virtual void visit_random_var(const ast::RandomVar &node)=0
visit node of type ast::RandomVar
virtual void visit_random_var_list(const ast::RandomVarList &node)=0
visit node of type ast::RandomVarList
virtual void visit_if_statement(const ast::IfStatement &node)=0
visit node of type ast::IfStatement
virtual void visit_diff_eq_expression(const ast::DiffEqExpression &node)=0
visit node of type ast::DiffEqExpression
virtual void visit_block(const ast::Block &node)=0
visit node of type ast::Block
virtual void visit_electrode_current(const ast::ElectrodeCurrent &node)=0
visit node of type ast::ElectrodeCurrent
virtual void visit_before_block(const ast::BeforeBlock &node)=0
visit node of type ast::BeforeBlock
virtual void visit_range_var(const ast::RangeVar &node)=0
visit node of type ast::RangeVar
virtual void visit_range(const ast::Range &node)=0
visit node of type ast::Range
virtual void visit_valence(const ast::Valence &node)=0
visit node of type ast::Valence
virtual void visit_ba_block(const ast::BABlock &node)=0
visit node of type ast::BABlock
virtual void visit_param_block(const ast::ParamBlock &node)=0
visit node of type ast::ParamBlock
virtual void visit_global_var(const ast::GlobalVar &node)=0
visit node of type ast::GlobalVar
virtual void visit_bbcore_pointer_var(const ast::BbcorePointerVar &node)=0
visit node of type ast::BbcorePointerVar
virtual void visit_ba_block_type(const ast::BABlockType &node)=0
visit node of type ast::BABlockType
virtual void visit_double(const ast::Double &node)=0
visit node of type ast::Double
virtual void visit_double_unit(const ast::DoubleUnit &node)=0
visit node of type ast::DoubleUnit
virtual void visit_wrapped_expression(const ast::WrappedExpression &node)=0
visit node of type ast::WrappedExpression
virtual void visit_read_ion_var(const ast::ReadIonVar &node)=0
visit node of type ast::ReadIonVar
virtual void visit_unit_def(const ast::UnitDef &node)=0
visit node of type ast::UnitDef
virtual void visit_param_assign(const ast::ParamAssign &node)=0
visit node of type ast::ParamAssign
virtual void visit_function_table_block(const ast::FunctionTableBlock &node)=0
visit node of type ast::FunctionTableBlock
virtual void visit_solution_expression(const ast::SolutionExpression &node)=0
visit node of type ast::SolutionExpression
virtual void visit_compartment(const ast::Compartment &node)=0
visit node of type ast::Compartment
virtual void visit_extern_var(const ast::ExternVar &node)=0
visit node of type ast::ExternVar
virtual void visit_function_block(const ast::FunctionBlock &node)=0
visit node of type ast::FunctionBlock
virtual void visit_expression(const ast::Expression &node)=0
visit node of type ast::Expression
virtual void visit_line_comment(const ast::LineComment &node)=0
visit node of type ast::LineComment
virtual void visit_unary_expression(const ast::UnaryExpression &node)=0
visit node of type ast::UnaryExpression
virtual void visit_string(const ast::String &node)=0
visit node of type ast::String
virtual void visit_longitudinal_diffusion_block(const ast::LongitudinalDiffusionBlock &node)=0
visit node of type ast::LongitudinalDiffusionBlock
virtual void visit_mutex_unlock(const ast::MutexUnlock &node)=0
visit node of type ast::MutexUnlock
virtual void visit_statement_block(const ast::StatementBlock &node)=0
visit node of type ast::StatementBlock
virtual void visit_conserve(const ast::Conserve &node)=0
visit node of type ast::Conserve
virtual void visit_for_netcon(const ast::ForNetcon &node)=0
visit node of type ast::ForNetcon
virtual void visit_eigen_linear_solver_block(const ast::EigenLinearSolverBlock &node)=0
visit node of type ast::EigenLinearSolverBlock
virtual void visit_expression_statement(const ast::ExpressionStatement &node)=0
visit node of type ast::ExpressionStatement
virtual void visit_argument(const ast::Argument &node)=0
visit node of type ast::Argument
virtual void visit_unit(const ast::Unit &node)=0
visit node of type ast::Unit
virtual ~ConstVisitor()=default
virtual void visit_initial_block(const ast::InitialBlock &node)=0
visit node of type ast::InitialBlock
virtual void visit_nonspecific_cur_var(const ast::NonspecificCurVar &node)=0
visit node of type ast::NonspecificCurVar
virtual void visit_else_statement(const ast::ElseStatement &node)=0
visit node of type ast::ElseStatement
virtual void visit_react_var_name(const ast::ReactVarName &node)=0
visit node of type ast::ReactVarName
virtual void visit_watch_statement(const ast::WatchStatement &node)=0
visit node of type ast::WatchStatement
virtual void visit_limits(const ast::Limits &node)=0
visit node of type ast::Limits
virtual void visit_neuron_block(const ast::NeuronBlock &node)=0
visit node of type ast::NeuronBlock
virtual void visit_derivative_block(const ast::DerivativeBlock &node)=0
visit node of type ast::DerivativeBlock
virtual void visit_local_var(const ast::LocalVar &node)=0
visit node of type ast::LocalVar
virtual void visit_name(const ast::Name &node)=0
visit node of type ast::Name
virtual void visit_define(const ast::Define &node)=0
visit node of type ast::Define
virtual void visit_program(const ast::Program &node)=0
visit node of type ast::Program
virtual void visit_lin_equation(const ast::LinEquation &node)=0
visit node of type ast::LinEquation
virtual void visit_number_range(const ast::NumberRange &node)=0
visit node of type ast::NumberRange
virtual void visit_lag_statement(const ast::LagStatement &node)=0
visit node of type ast::LagStatement
virtual void visit_eigen_newton_solver_block(const ast::EigenNewtonSolverBlock &node)=0
visit node of type ast::EigenNewtonSolverBlock
virtual void visit_integer(const ast::Integer &node)=0
visit node of type ast::Integer
virtual void visit_procedure_block(const ast::ProcedureBlock &node)=0
visit node of type ast::ProcedureBlock
virtual void visit_breakpoint_block(const ast::BreakpointBlock &node)=0
visit node of type ast::BreakpointBlock
virtual void visit_non_lin_equation(const ast::NonLinEquation &node)=0
visit node of type ast::NonLinEquation
virtual void visit_unit_state(const ast::UnitState &node)=0
visit node of type ast::UnitState
virtual void visit_from_statement(const ast::FromStatement &node)=0
visit node of type ast::FromStatement
virtual void visit_local_list_statement(const ast::LocalListStatement &node)=0
visit node of type ast::LocalListStatement
virtual void visit_constant_statement(const ast::ConstantStatement &node)=0
visit node of type ast::ConstantStatement
virtual void visit_constructor_block(const ast::ConstructorBlock &node)=0
visit node of type ast::ConstructorBlock
virtual void visit_mutex_lock(const ast::MutexLock &node)=0
visit node of type ast::MutexLock
virtual void visit_external(const ast::External &node)=0
visit node of type ast::External
virtual void visit_function_call(const ast::FunctionCall &node)=0
visit node of type ast::FunctionCall
virtual void visit_identifier(const ast::Identifier &node)=0
visit node of type ast::Identifier
virtual void visit_lon_diffuse(const ast::LonDiffuse &node)=0
visit node of type ast::LonDiffuse
virtual void visit_pointer_var(const ast::PointerVar &node)=0
visit node of type ast::PointerVar
virtual void visit_nrn_state_block(const ast::NrnStateBlock &node)=0
visit node of type ast::NrnStateBlock
virtual void visit_prime_name(const ast::PrimeName &node)=0
visit node of type ast::PrimeName
virtual void visit_watch(const ast::Watch &node)=0
visit node of type ast::Watch
virtual void visit_statement(const ast::Statement &node)=0
visit node of type ast::Statement
virtual void visit_solve_block(const ast::SolveBlock &node)=0
visit node of type ast::SolveBlock
virtual void visit_paren_expression(const ast::ParenExpression &node)=0
visit node of type ast::ParenExpression
virtual void visit_model(const ast::Model &node)=0
visit node of type ast::Model
virtual void visit_write_ion_var(const ast::WriteIonVar &node)=0
visit node of type ast::WriteIonVar
virtual void visit_state_block(const ast::StateBlock &node)=0
visit node of type ast::StateBlock
virtual void visit_conductance_hint(const ast::ConductanceHint &node)=0
visit node of type ast::ConductanceHint
virtual void visit_unit_block(const ast::UnitBlock &node)=0
visit node of type ast::UnitBlock
virtual void visit_number(const ast::Number &node)=0
visit node of type ast::Number
virtual void visit_after_block(const ast::AfterBlock &node)=0
visit node of type ast::AfterBlock
virtual void visit_else_if_statement(const ast::ElseIfStatement &node)=0
visit node of type ast::ElseIfStatement
virtual void visit_var_name(const ast::VarName &node)=0
visit node of type ast::VarName
virtual void visit_boolean(const ast::Boolean &node)=0
visit node of type ast::Boolean
virtual void visit_float(const ast::Float &node)=0
visit node of type ast::Float
virtual void visit_reaction_statement(const ast::ReactionStatement &node)=0
visit node of type ast::ReactionStatement
virtual void visit_destructor_block(const ast::DestructorBlock &node)=0
visit node of type ast::DestructorBlock
virtual void visit_node(const ast::Node &node)=0
visit node of type ast::Node
virtual void visit_cvode_block(const ast::CvodeBlock &node)=0
visit node of type ast::CvodeBlock
virtual void visit_electrode_cur_var(const ast::ElectrodeCurVar &node)=0
visit node of type ast::ElectrodeCurVar
virtual void visit_suffix(const ast::Suffix &node)=0
visit node of type ast::Suffix
virtual void visit_assigned_definition(const ast::AssignedDefinition &node)=0
visit node of type ast::AssignedDefinition
virtual void visit_global(const ast::Global &node)=0
visit node of type ast::Global
virtual void visit_ontology_statement(const ast::OntologyStatement &node)=0
visit node of type ast::OntologyStatement
virtual void visit_non_linear_block(const ast::NonLinearBlock &node)=0
visit node of type ast::NonLinearBlock
virtual void visit_discrete_block(const ast::DiscreteBlock &node)=0
visit node of type ast::DiscreteBlock
virtual void visit_assigned_block(const ast::AssignedBlock &node)=0
visit node of type ast::AssignedBlock
virtual void visit_nonspecific(const ast::Nonspecific &node)=0
visit node of type ast::Nonspecific
virtual void visit_pointer(const ast::Pointer &node)=0
visit node of type ast::Pointer
virtual void visit_bbcore_pointer(const ast::BbcorePointer &node)=0
visit node of type ast::BbcorePointer
virtual void visit_derivimplicit_callback(const ast::DerivimplicitCallback &node)=0
visit node of type ast::DerivimplicitCallback
Abstract base class for all visitors implementation.
Definition: visitor.hpp:39
virtual void visit_range(ast::Range &node)=0
visit node of type ast::Range
virtual void visit_limits(ast::Limits &node)=0
visit node of type ast::Limits
virtual void visit_breakpoint_block(ast::BreakpointBlock &node)=0
visit node of type ast::BreakpointBlock
virtual void visit_statement_block(ast::StatementBlock &node)=0
visit node of type ast::StatementBlock
virtual void visit_non_linear_block(ast::NonLinearBlock &node)=0
visit node of type ast::NonLinearBlock
virtual void visit_param_assign(ast::ParamAssign &node)=0
visit node of type ast::ParamAssign
virtual void visit_non_lin_equation(ast::NonLinEquation &node)=0
visit node of type ast::NonLinEquation
virtual void visit_global(ast::Global &node)=0
visit node of type ast::Global
virtual void visit_constant_var(ast::ConstantVar &node)=0
visit node of type ast::ConstantVar
virtual void visit_binary_operator(ast::BinaryOperator &node)=0
visit node of type ast::BinaryOperator
virtual void visit_after_block(ast::AfterBlock &node)=0
visit node of type ast::AfterBlock
virtual void visit_useion(ast::Useion &node)=0
visit node of type ast::Useion
virtual void visit_conserve(ast::Conserve &node)=0
visit node of type ast::Conserve
virtual void visit_name(ast::Name &node)=0
visit node of type ast::Name
virtual void visit_var_name(ast::VarName &node)=0
visit node of type ast::VarName
virtual void visit_expression_statement(ast::ExpressionStatement &node)=0
visit node of type ast::ExpressionStatement
virtual void visit_wrapped_expression(ast::WrappedExpression &node)=0
visit node of type ast::WrappedExpression
virtual void visit_independent_block(ast::IndependentBlock &node)=0
visit node of type ast::IndependentBlock
virtual void visit_net_receive_block(ast::NetReceiveBlock &node)=0
visit node of type ast::NetReceiveBlock
virtual void visit_extern_var(ast::ExternVar &node)=0
visit node of type ast::ExternVar
virtual void visit_model(ast::Model &node)=0
visit node of type ast::Model
virtual void visit_suffix(ast::Suffix &node)=0
visit node of type ast::Suffix
virtual void visit_local_var(ast::LocalVar &node)=0
visit node of type ast::LocalVar
virtual void visit_compartment(ast::Compartment &node)=0
visit node of type ast::Compartment
virtual void visit_number_range(ast::NumberRange &node)=0
visit node of type ast::NumberRange
virtual void visit_else_statement(ast::ElseStatement &node)=0
visit node of type ast::ElseStatement
virtual void visit_ba_block_type(ast::BABlockType &node)=0
visit node of type ast::BABlockType
virtual void visit_watch(ast::Watch &node)=0
visit node of type ast::Watch
virtual void visit_conductance_hint(ast::ConductanceHint &node)=0
visit node of type ast::ConductanceHint
virtual void visit_boolean(ast::Boolean &node)=0
visit node of type ast::Boolean
virtual void visit_unit_block(ast::UnitBlock &node)=0
visit node of type ast::UnitBlock
virtual void visit_local_list_statement(ast::LocalListStatement &node)=0
visit node of type ast::LocalListStatement
virtual void visit_read_ion_var(ast::ReadIonVar &node)=0
visit node of type ast::ReadIonVar
virtual ~Visitor()=default
virtual void visit_node(ast::Node &node)=0
visit node of type ast::Node
virtual void visit_verbatim(ast::Verbatim &node)=0
visit node of type ast::Verbatim
virtual void visit_bbcore_pointer_var(ast::BbcorePointerVar &node)=0
visit node of type ast::BbcorePointerVar
virtual void visit_nrn_state_block(ast::NrnStateBlock &node)=0
visit node of type ast::NrnStateBlock
virtual void visit_discrete_block(ast::DiscreteBlock &node)=0
visit node of type ast::DiscreteBlock
virtual void visit_unary_expression(ast::UnaryExpression &node)=0
visit node of type ast::UnaryExpression
virtual void visit_reaction_statement(ast::ReactionStatement &node)=0
visit node of type ast::ReactionStatement
virtual void visit_paren_expression(ast::ParenExpression &node)=0
visit node of type ast::ParenExpression
virtual void visit_valence(ast::Valence &node)=0
visit node of type ast::Valence
virtual void visit_block(ast::Block &node)=0
visit node of type ast::Block
virtual void visit_kinetic_block(ast::KineticBlock &node)=0
visit node of type ast::KineticBlock
virtual void visit_program(ast::Program &node)=0
visit node of type ast::Program
virtual void visit_if_statement(ast::IfStatement &node)=0
visit node of type ast::IfStatement
virtual void visit_electrode_current(ast::ElectrodeCurrent &node)=0
visit node of type ast::ElectrodeCurrent
virtual void visit_global_var(ast::GlobalVar &node)=0
visit node of type ast::GlobalVar
virtual void visit_while_statement(ast::WhileStatement &node)=0
visit node of type ast::WhileStatement
virtual void visit_external(ast::External &node)=0
visit node of type ast::External
virtual void visit_constructor_block(ast::ConstructorBlock &node)=0
visit node of type ast::ConstructorBlock
virtual void visit_neuron_block(ast::NeuronBlock &node)=0
visit node of type ast::NeuronBlock
virtual void visit_derivimplicit_callback(ast::DerivimplicitCallback &node)=0
visit node of type ast::DerivimplicitCallback
virtual void visit_update_dt(ast::UpdateDt &node)=0
visit node of type ast::UpdateDt
virtual void visit_constant_block(ast::ConstantBlock &node)=0
visit node of type ast::ConstantBlock
virtual void visit_state_block(ast::StateBlock &node)=0
visit node of type ast::StateBlock
virtual void visit_protect_statement(ast::ProtectStatement &node)=0
visit node of type ast::ProtectStatement
virtual void visit_prime_name(ast::PrimeName &node)=0
visit node of type ast::PrimeName
virtual void visit_random_var_list(ast::RandomVarList &node)=0
visit node of type ast::RandomVarList
virtual void visit_range_var(ast::RangeVar &node)=0
visit node of type ast::RangeVar
virtual void visit_else_if_statement(ast::ElseIfStatement &node)=0
visit node of type ast::ElseIfStatement
virtual void visit_indexed_name(ast::IndexedName &node)=0
visit node of type ast::IndexedName
virtual void visit_binary_expression(ast::BinaryExpression &node)=0
visit node of type ast::BinaryExpression
virtual void visit_watch_statement(ast::WatchStatement &node)=0
visit node of type ast::WatchStatement
virtual void visit_pointer(ast::Pointer &node)=0
visit node of type ast::Pointer
virtual void visit_integer(ast::Integer &node)=0
visit node of type ast::Integer
virtual void visit_derivative_block(ast::DerivativeBlock &node)=0
visit node of type ast::DerivativeBlock
virtual void visit_argument(ast::Argument &node)=0
visit node of type ast::Argument
virtual void visit_solution_expression(ast::SolutionExpression &node)=0
visit node of type ast::SolutionExpression
virtual void visit_procedure_block(ast::ProcedureBlock &node)=0
visit node of type ast::ProcedureBlock
virtual void visit_reaction_operator(ast::ReactionOperator &node)=0
visit node of type ast::ReactionOperator
virtual void visit_assigned_block(ast::AssignedBlock &node)=0
visit node of type ast::AssignedBlock
virtual void visit_linear_block(ast::LinearBlock &node)=0
visit node of type ast::LinearBlock
virtual void visit_define(ast::Define &node)=0
visit node of type ast::Define
virtual void visit_pointer_var(ast::PointerVar &node)=0
visit node of type ast::PointerVar
virtual void visit_solve_block(ast::SolveBlock &node)=0
visit node of type ast::SolveBlock
virtual void visit_nonspecific_cur_var(ast::NonspecificCurVar &node)=0
visit node of type ast::NonspecificCurVar
virtual void visit_lin_equation(ast::LinEquation &node)=0
visit node of type ast::LinEquation
virtual void visit_unit_state(ast::UnitState &node)=0
visit node of type ast::UnitState
virtual void visit_eigen_newton_solver_block(ast::EigenNewtonSolverBlock &node)=0
visit node of type ast::EigenNewtonSolverBlock
virtual void visit_cvode_block(ast::CvodeBlock &node)=0
visit node of type ast::CvodeBlock
virtual void visit_ontology_statement(ast::OntologyStatement &node)=0
visit node of type ast::OntologyStatement
virtual void visit_table_statement(ast::TableStatement &node)=0
visit node of type ast::TableStatement
virtual void visit_param_block(ast::ParamBlock &node)=0
visit node of type ast::ParamBlock
virtual void visit_function_block(ast::FunctionBlock &node)=0
visit node of type ast::FunctionBlock
virtual void visit_number(ast::Number &node)=0
visit node of type ast::Number
virtual void visit_constant_statement(ast::ConstantStatement &node)=0
visit node of type ast::ConstantStatement
virtual void visit_include(ast::Include &node)=0
visit node of type ast::Include
virtual void visit_function_call(ast::FunctionCall &node)=0
visit node of type ast::FunctionCall
virtual void visit_destructor_block(ast::DestructorBlock &node)=0
visit node of type ast::DestructorBlock
virtual void visit_unit(ast::Unit &node)=0
visit node of type ast::Unit
virtual void visit_lon_diffuse(ast::LonDiffuse &node)=0
visit node of type ast::LonDiffuse
virtual void visit_identifier(ast::Identifier &node)=0
visit node of type ast::Identifier
virtual void visit_ba_block(ast::BABlock &node)=0
visit node of type ast::BABlock
virtual void visit_statement(ast::Statement &node)=0
visit node of type ast::Statement
virtual void visit_longitudinal_diffusion_block(ast::LongitudinalDiffusionBlock &node)=0
visit node of type ast::LongitudinalDiffusionBlock
virtual void visit_write_ion_var(ast::WriteIonVar &node)=0
visit node of type ast::WriteIonVar
virtual void visit_random_var(ast::RandomVar &node)=0
visit node of type ast::RandomVar
virtual void visit_double_unit(ast::DoubleUnit &node)=0
visit node of type ast::DoubleUnit
virtual void visit_react_var_name(ast::ReactVarName &node)=0
visit node of type ast::ReactVarName
virtual void visit_eigen_linear_solver_block(ast::EigenLinearSolverBlock &node)=0
visit node of type ast::EigenLinearSolverBlock
virtual void visit_mutex_unlock(ast::MutexUnlock &node)=0
visit node of type ast::MutexUnlock
virtual void visit_thread_safe(ast::ThreadSafe &node)=0
visit node of type ast::ThreadSafe
virtual void visit_function_table_block(ast::FunctionTableBlock &node)=0
visit node of type ast::FunctionTableBlock
virtual void visit_initial_block(ast::InitialBlock &node)=0
visit node of type ast::InitialBlock
virtual void visit_unit_def(ast::UnitDef &node)=0
visit node of type ast::UnitDef
virtual void visit_diff_eq_expression(ast::DiffEqExpression &node)=0
visit node of type ast::DiffEqExpression
virtual void visit_for_netcon(ast::ForNetcon &node)=0
visit node of type ast::ForNetcon
virtual void visit_electrode_cur_var(ast::ElectrodeCurVar &node)=0
visit node of type ast::ElectrodeCurVar
virtual void visit_from_statement(ast::FromStatement &node)=0
visit node of type ast::FromStatement
virtual void visit_string(ast::String &node)=0
visit node of type ast::String
virtual void visit_expression(ast::Expression &node)=0
visit node of type ast::Expression
virtual void visit_unary_operator(ast::UnaryOperator &node)=0
visit node of type ast::UnaryOperator
virtual void visit_mutex_lock(ast::MutexLock &node)=0
visit node of type ast::MutexLock
virtual void visit_line_comment(ast::LineComment &node)=0
visit node of type ast::LineComment
virtual void visit_before_block(ast::BeforeBlock &node)=0
visit node of type ast::BeforeBlock
virtual void visit_double(ast::Double &node)=0
visit node of type ast::Double
virtual void visit_bbcore_pointer(ast::BbcorePointer &node)=0
visit node of type ast::BbcorePointer
virtual void visit_factor_def(ast::FactorDef &node)=0
visit node of type ast::FactorDef
virtual void visit_lag_statement(ast::LagStatement &node)=0
visit node of type ast::LagStatement
virtual void visit_assigned_definition(ast::AssignedDefinition &node)=0
visit node of type ast::AssignedDefinition
virtual void visit_float(ast::Float &node)=0
visit node of type ast::Float
virtual void visit_block_comment(ast::BlockComment &node)=0
visit node of type ast::BlockComment
virtual void visit_nonspecific(ast::Nonspecific &node)=0
visit node of type ast::Nonspecific
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
static Node * node(Object *)
Definition: netcvode.cpp:291