NEURON
ast_decl.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 <memory>
15 #include <vector>
16 
17 /// \file
18 /// \brief Auto generated AST node types and aliases declaration
19 
20 namespace nmodl {
21 namespace ast {
22 
23 /// forward declaration of ast nodes
24 
25 struct Ast;
26 class Node;
27 class Statement;
28 class Expression;
29 class Block;
30 class Identifier;
31 class Number;
32 class String;
33 class Integer;
34 class Float;
35 class Double;
36 class Boolean;
37 class Name;
38 class PrimeName;
39 class IndexedName;
40 class VarName;
41 class Argument;
42 class ReactVarName;
43 class ReadIonVar;
44 class WriteIonVar;
45 class NonspecificCurVar;
46 class ElectrodeCurVar;
47 class RangeVar;
48 class GlobalVar;
49 class PointerVar;
50 class RandomVar;
51 class BbcorePointerVar;
52 class ExternVar;
53 class ParamBlock;
54 class IndependentBlock;
55 class AssignedBlock;
56 class StateBlock;
57 class InitialBlock;
58 class ConstructorBlock;
59 class DestructorBlock;
60 class StatementBlock;
61 class DerivativeBlock;
62 class LinearBlock;
63 class NonLinearBlock;
64 class DiscreteBlock;
65 class FunctionTableBlock;
66 class FunctionBlock;
67 class ProcedureBlock;
68 class NetReceiveBlock;
69 class SolveBlock;
70 class BreakpointBlock;
71 class BeforeBlock;
72 class AfterBlock;
73 class BABlock;
74 class ForNetcon;
75 class KineticBlock;
76 class UnitBlock;
77 class ConstantBlock;
78 class NeuronBlock;
79 class Unit;
80 class DoubleUnit;
81 class LocalVar;
82 class Limits;
83 class NumberRange;
84 class ConstantVar;
85 class BinaryOperator;
86 class UnaryOperator;
87 class ReactionOperator;
88 class ParenExpression;
89 class BinaryExpression;
90 class DiffEqExpression;
91 class UnaryExpression;
92 class NonLinEquation;
93 class LinEquation;
94 class FunctionCall;
95 class Watch;
96 class BABlockType;
97 class UnitDef;
98 class FactorDef;
99 class Valence;
100 class UnitState;
101 class LocalListStatement;
102 class Model;
103 class Define;
104 class Include;
105 class ParamAssign;
106 class AssignedDefinition;
107 class ConductanceHint;
108 class ExpressionStatement;
109 class ProtectStatement;
110 class FromStatement;
111 class WhileStatement;
112 class IfStatement;
113 class ElseIfStatement;
114 class ElseStatement;
115 class WatchStatement;
116 class MutexLock;
117 class MutexUnlock;
118 class Conserve;
119 class Compartment;
120 class LonDiffuse;
121 class ReactionStatement;
122 class LagStatement;
123 class ConstantStatement;
124 class TableStatement;
125 class Suffix;
126 class Useion;
127 class Nonspecific;
128 class ElectrodeCurrent;
129 class Range;
130 class Global;
131 class RandomVarList;
132 class Pointer;
133 class BbcorePointer;
134 class External;
135 class ThreadSafe;
136 class Verbatim;
137 class LineComment;
138 class BlockComment;
139 class OntologyStatement;
140 class Program;
141 class NrnStateBlock;
142 class EigenNewtonSolverBlock;
143 class EigenLinearSolverBlock;
144 class CvodeBlock;
145 class LongitudinalDiffusionBlock;
146 class WrappedExpression;
147 class DerivimplicitCallback;
148 class SolutionExpression;
149 class UpdateDt;
150 
151 /**
152  * @defgroup ast_type AST Node Types
153  * @ingroup ast
154  * @brief Enum node types for all ast nodes
155  * @{
156  */
157 
158 /**
159  * \brief Enum type for every AST node type
160  *
161  * Every node in the ast has associated type represented by this
162  * enum class.
163  *
164  * \sa ast::Ast::get_node_type ast::Ast::get_node_type_name
165  */
166 enum class AstNodeType {
167  NODE, ///< type of ast::Node
168  STATEMENT, ///< type of ast::Statement
169  EXPRESSION, ///< type of ast::Expression
170  BLOCK, ///< type of ast::Block
171  IDENTIFIER, ///< type of ast::Identifier
172  NUMBER, ///< type of ast::Number
173  STRING, ///< type of ast::String
174  INTEGER, ///< type of ast::Integer
175  FLOAT, ///< type of ast::Float
176  DOUBLE, ///< type of ast::Double
177  BOOLEAN, ///< type of ast::Boolean
178  NAME, ///< type of ast::Name
179  PRIME_NAME, ///< type of ast::PrimeName
180  INDEXED_NAME, ///< type of ast::IndexedName
181  VAR_NAME, ///< type of ast::VarName
182  ARGUMENT, ///< type of ast::Argument
183  REACT_VAR_NAME, ///< type of ast::ReactVarName
184  READ_ION_VAR, ///< type of ast::ReadIonVar
185  WRITE_ION_VAR, ///< type of ast::WriteIonVar
186  NONSPECIFIC_CUR_VAR, ///< type of ast::NonspecificCurVar
187  ELECTRODE_CUR_VAR, ///< type of ast::ElectrodeCurVar
188  RANGE_VAR, ///< type of ast::RangeVar
189  GLOBAL_VAR, ///< type of ast::GlobalVar
190  POINTER_VAR, ///< type of ast::PointerVar
191  RANDOM_VAR, ///< type of ast::RandomVar
192  BBCORE_POINTER_VAR, ///< type of ast::BbcorePointerVar
193  EXTERN_VAR, ///< type of ast::ExternVar
194  PARAM_BLOCK, ///< type of ast::ParamBlock
195  INDEPENDENT_BLOCK, ///< type of ast::IndependentBlock
196  ASSIGNED_BLOCK, ///< type of ast::AssignedBlock
197  STATE_BLOCK, ///< type of ast::StateBlock
198  INITIAL_BLOCK, ///< type of ast::InitialBlock
199  CONSTRUCTOR_BLOCK, ///< type of ast::ConstructorBlock
200  DESTRUCTOR_BLOCK, ///< type of ast::DestructorBlock
201  STATEMENT_BLOCK, ///< type of ast::StatementBlock
202  DERIVATIVE_BLOCK, ///< type of ast::DerivativeBlock
203  LINEAR_BLOCK, ///< type of ast::LinearBlock
204  NON_LINEAR_BLOCK, ///< type of ast::NonLinearBlock
205  DISCRETE_BLOCK, ///< type of ast::DiscreteBlock
206  FUNCTION_TABLE_BLOCK, ///< type of ast::FunctionTableBlock
207  FUNCTION_BLOCK, ///< type of ast::FunctionBlock
208  PROCEDURE_BLOCK, ///< type of ast::ProcedureBlock
209  NET_RECEIVE_BLOCK, ///< type of ast::NetReceiveBlock
210  SOLVE_BLOCK, ///< type of ast::SolveBlock
211  BREAKPOINT_BLOCK, ///< type of ast::BreakpointBlock
212  BEFORE_BLOCK, ///< type of ast::BeforeBlock
213  AFTER_BLOCK, ///< type of ast::AfterBlock
214  BA_BLOCK, ///< type of ast::BABlock
215  FOR_NETCON, ///< type of ast::ForNetcon
216  KINETIC_BLOCK, ///< type of ast::KineticBlock
217  UNIT_BLOCK, ///< type of ast::UnitBlock
218  CONSTANT_BLOCK, ///< type of ast::ConstantBlock
219  NEURON_BLOCK, ///< type of ast::NeuronBlock
220  UNIT, ///< type of ast::Unit
221  DOUBLE_UNIT, ///< type of ast::DoubleUnit
222  LOCAL_VAR, ///< type of ast::LocalVar
223  LIMITS, ///< type of ast::Limits
224  NUMBER_RANGE, ///< type of ast::NumberRange
225  CONSTANT_VAR, ///< type of ast::ConstantVar
226  BINARY_OPERATOR, ///< type of ast::BinaryOperator
227  UNARY_OPERATOR, ///< type of ast::UnaryOperator
228  REACTION_OPERATOR, ///< type of ast::ReactionOperator
229  PAREN_EXPRESSION, ///< type of ast::ParenExpression
230  BINARY_EXPRESSION, ///< type of ast::BinaryExpression
231  DIFF_EQ_EXPRESSION, ///< type of ast::DiffEqExpression
232  UNARY_EXPRESSION, ///< type of ast::UnaryExpression
233  NON_LIN_EQUATION, ///< type of ast::NonLinEquation
234  LIN_EQUATION, ///< type of ast::LinEquation
235  FUNCTION_CALL, ///< type of ast::FunctionCall
236  WATCH, ///< type of ast::Watch
237  BA_BLOCK_TYPE, ///< type of ast::BABlockType
238  UNIT_DEF, ///< type of ast::UnitDef
239  FACTOR_DEF, ///< type of ast::FactorDef
240  VALENCE, ///< type of ast::Valence
241  UNIT_STATE, ///< type of ast::UnitState
242  LOCAL_LIST_STATEMENT, ///< type of ast::LocalListStatement
243  MODEL, ///< type of ast::Model
244  DEFINE, ///< type of ast::Define
245  INCLUDE, ///< type of ast::Include
246  PARAM_ASSIGN, ///< type of ast::ParamAssign
247  ASSIGNED_DEFINITION, ///< type of ast::AssignedDefinition
248  CONDUCTANCE_HINT, ///< type of ast::ConductanceHint
249  EXPRESSION_STATEMENT, ///< type of ast::ExpressionStatement
250  PROTECT_STATEMENT, ///< type of ast::ProtectStatement
251  FROM_STATEMENT, ///< type of ast::FromStatement
252  WHILE_STATEMENT, ///< type of ast::WhileStatement
253  IF_STATEMENT, ///< type of ast::IfStatement
254  ELSE_IF_STATEMENT, ///< type of ast::ElseIfStatement
255  ELSE_STATEMENT, ///< type of ast::ElseStatement
256  WATCH_STATEMENT, ///< type of ast::WatchStatement
257  MUTEX_LOCK, ///< type of ast::MutexLock
258  MUTEX_UNLOCK, ///< type of ast::MutexUnlock
259  CONSERVE, ///< type of ast::Conserve
260  COMPARTMENT, ///< type of ast::Compartment
261  LON_DIFFUSE, ///< type of ast::LonDiffuse
262  REACTION_STATEMENT, ///< type of ast::ReactionStatement
263  LAG_STATEMENT, ///< type of ast::LagStatement
264  CONSTANT_STATEMENT, ///< type of ast::ConstantStatement
265  TABLE_STATEMENT, ///< type of ast::TableStatement
266  SUFFIX, ///< type of ast::Suffix
267  USEION, ///< type of ast::Useion
268  NONSPECIFIC, ///< type of ast::Nonspecific
269  ELECTRODE_CURRENT, ///< type of ast::ElectrodeCurrent
270  RANGE, ///< type of ast::Range
271  GLOBAL, ///< type of ast::Global
272  RANDOM_VAR_LIST, ///< type of ast::RandomVarList
273  POINTER, ///< type of ast::Pointer
274  BBCORE_POINTER, ///< type of ast::BbcorePointer
275  EXTERNAL, ///< type of ast::External
276  THREAD_SAFE, ///< type of ast::ThreadSafe
277  VERBATIM, ///< type of ast::Verbatim
278  LINE_COMMENT, ///< type of ast::LineComment
279  BLOCK_COMMENT, ///< type of ast::BlockComment
280  ONTOLOGY_STATEMENT, ///< type of ast::OntologyStatement
281  PROGRAM, ///< type of ast::Program
282  NRN_STATE_BLOCK, ///< type of ast::NrnStateBlock
283  EIGEN_NEWTON_SOLVER_BLOCK, ///< type of ast::EigenNewtonSolverBlock
284  EIGEN_LINEAR_SOLVER_BLOCK, ///< type of ast::EigenLinearSolverBlock
285  CVODE_BLOCK, ///< type of ast::CvodeBlock
286  LONGITUDINAL_DIFFUSION_BLOCK, ///< type of ast::LongitudinalDiffusionBlock
287  WRAPPED_EXPRESSION, ///< type of ast::WrappedExpression
288  DERIVIMPLICIT_CALLBACK, ///< type of ast::DerivimplicitCallback
289  SOLUTION_EXPRESSION, ///< type of ast::SolutionExpression
290  UPDATE_DT, ///< type of ast::UpdateDt
291 };
292 
293 /** @} */ // end of ast_type
294 
295 /**
296  * @defgroup ast_vec_type AST Vector Type Aliases
297  * @ingroup ast
298  * @brief Vector type alias for AST node
299  * @{
300  */
301 using NodeVector = std::vector<std::shared_ptr<Node>>;
302 using StatementVector = std::vector<std::shared_ptr<Statement>>;
303 using ExpressionVector = std::vector<std::shared_ptr<Expression>>;
304 using BlockVector = std::vector<std::shared_ptr<Block>>;
305 using IdentifierVector = std::vector<std::shared_ptr<Identifier>>;
306 using NumberVector = std::vector<std::shared_ptr<Number>>;
307 using StringVector = std::vector<std::shared_ptr<String>>;
308 using IntegerVector = std::vector<std::shared_ptr<Integer>>;
309 using FloatVector = std::vector<std::shared_ptr<Float>>;
310 using DoubleVector = std::vector<std::shared_ptr<Double>>;
311 using BooleanVector = std::vector<std::shared_ptr<Boolean>>;
312 using NameVector = std::vector<std::shared_ptr<Name>>;
313 using PrimeNameVector = std::vector<std::shared_ptr<PrimeName>>;
314 using IndexedNameVector = std::vector<std::shared_ptr<IndexedName>>;
315 using VarNameVector = std::vector<std::shared_ptr<VarName>>;
316 using ArgumentVector = std::vector<std::shared_ptr<Argument>>;
317 using ReactVarNameVector = std::vector<std::shared_ptr<ReactVarName>>;
318 using ReadIonVarVector = std::vector<std::shared_ptr<ReadIonVar>>;
319 using WriteIonVarVector = std::vector<std::shared_ptr<WriteIonVar>>;
320 using NonspecificCurVarVector = std::vector<std::shared_ptr<NonspecificCurVar>>;
321 using ElectrodeCurVarVector = std::vector<std::shared_ptr<ElectrodeCurVar>>;
322 using RangeVarVector = std::vector<std::shared_ptr<RangeVar>>;
323 using GlobalVarVector = std::vector<std::shared_ptr<GlobalVar>>;
324 using PointerVarVector = std::vector<std::shared_ptr<PointerVar>>;
325 using RandomVarVector = std::vector<std::shared_ptr<RandomVar>>;
326 using BbcorePointerVarVector = std::vector<std::shared_ptr<BbcorePointerVar>>;
327 using ExternVarVector = std::vector<std::shared_ptr<ExternVar>>;
328 using ParamBlockVector = std::vector<std::shared_ptr<ParamBlock>>;
329 using IndependentBlockVector = std::vector<std::shared_ptr<IndependentBlock>>;
330 using AssignedBlockVector = std::vector<std::shared_ptr<AssignedBlock>>;
331 using StateBlockVector = std::vector<std::shared_ptr<StateBlock>>;
332 using InitialBlockVector = std::vector<std::shared_ptr<InitialBlock>>;
333 using ConstructorBlockVector = std::vector<std::shared_ptr<ConstructorBlock>>;
334 using DestructorBlockVector = std::vector<std::shared_ptr<DestructorBlock>>;
335 using StatementBlockVector = std::vector<std::shared_ptr<StatementBlock>>;
336 using DerivativeBlockVector = std::vector<std::shared_ptr<DerivativeBlock>>;
337 using LinearBlockVector = std::vector<std::shared_ptr<LinearBlock>>;
338 using NonLinearBlockVector = std::vector<std::shared_ptr<NonLinearBlock>>;
339 using DiscreteBlockVector = std::vector<std::shared_ptr<DiscreteBlock>>;
340 using FunctionTableBlockVector = std::vector<std::shared_ptr<FunctionTableBlock>>;
341 using FunctionBlockVector = std::vector<std::shared_ptr<FunctionBlock>>;
342 using ProcedureBlockVector = std::vector<std::shared_ptr<ProcedureBlock>>;
343 using NetReceiveBlockVector = std::vector<std::shared_ptr<NetReceiveBlock>>;
344 using SolveBlockVector = std::vector<std::shared_ptr<SolveBlock>>;
345 using BreakpointBlockVector = std::vector<std::shared_ptr<BreakpointBlock>>;
346 using BeforeBlockVector = std::vector<std::shared_ptr<BeforeBlock>>;
347 using AfterBlockVector = std::vector<std::shared_ptr<AfterBlock>>;
348 using BABlockVector = std::vector<std::shared_ptr<BABlock>>;
349 using ForNetconVector = std::vector<std::shared_ptr<ForNetcon>>;
350 using KineticBlockVector = std::vector<std::shared_ptr<KineticBlock>>;
351 using UnitBlockVector = std::vector<std::shared_ptr<UnitBlock>>;
352 using ConstantBlockVector = std::vector<std::shared_ptr<ConstantBlock>>;
353 using NeuronBlockVector = std::vector<std::shared_ptr<NeuronBlock>>;
354 using UnitVector = std::vector<std::shared_ptr<Unit>>;
355 using DoubleUnitVector = std::vector<std::shared_ptr<DoubleUnit>>;
356 using LocalVarVector = std::vector<std::shared_ptr<LocalVar>>;
357 using LimitsVector = std::vector<std::shared_ptr<Limits>>;
358 using NumberRangeVector = std::vector<std::shared_ptr<NumberRange>>;
359 using ConstantVarVector = std::vector<std::shared_ptr<ConstantVar>>;
360 using BinaryOperatorVector = std::vector<std::shared_ptr<BinaryOperator>>;
361 using UnaryOperatorVector = std::vector<std::shared_ptr<UnaryOperator>>;
362 using ReactionOperatorVector = std::vector<std::shared_ptr<ReactionOperator>>;
363 using ParenExpressionVector = std::vector<std::shared_ptr<ParenExpression>>;
364 using BinaryExpressionVector = std::vector<std::shared_ptr<BinaryExpression>>;
365 using DiffEqExpressionVector = std::vector<std::shared_ptr<DiffEqExpression>>;
366 using UnaryExpressionVector = std::vector<std::shared_ptr<UnaryExpression>>;
367 using NonLinEquationVector = std::vector<std::shared_ptr<NonLinEquation>>;
368 using LinEquationVector = std::vector<std::shared_ptr<LinEquation>>;
369 using FunctionCallVector = std::vector<std::shared_ptr<FunctionCall>>;
370 using WatchVector = std::vector<std::shared_ptr<Watch>>;
371 using BABlockTypeVector = std::vector<std::shared_ptr<BABlockType>>;
372 using UnitDefVector = std::vector<std::shared_ptr<UnitDef>>;
373 using FactorDefVector = std::vector<std::shared_ptr<FactorDef>>;
374 using ValenceVector = std::vector<std::shared_ptr<Valence>>;
375 using UnitStateVector = std::vector<std::shared_ptr<UnitState>>;
376 using LocalListStatementVector = std::vector<std::shared_ptr<LocalListStatement>>;
377 using ModelVector = std::vector<std::shared_ptr<Model>>;
378 using DefineVector = std::vector<std::shared_ptr<Define>>;
379 using IncludeVector = std::vector<std::shared_ptr<Include>>;
380 using ParamAssignVector = std::vector<std::shared_ptr<ParamAssign>>;
381 using AssignedDefinitionVector = std::vector<std::shared_ptr<AssignedDefinition>>;
382 using ConductanceHintVector = std::vector<std::shared_ptr<ConductanceHint>>;
383 using ExpressionStatementVector = std::vector<std::shared_ptr<ExpressionStatement>>;
384 using ProtectStatementVector = std::vector<std::shared_ptr<ProtectStatement>>;
385 using FromStatementVector = std::vector<std::shared_ptr<FromStatement>>;
386 using WhileStatementVector = std::vector<std::shared_ptr<WhileStatement>>;
387 using IfStatementVector = std::vector<std::shared_ptr<IfStatement>>;
388 using ElseIfStatementVector = std::vector<std::shared_ptr<ElseIfStatement>>;
389 using ElseStatementVector = std::vector<std::shared_ptr<ElseStatement>>;
390 using WatchStatementVector = std::vector<std::shared_ptr<WatchStatement>>;
391 using MutexLockVector = std::vector<std::shared_ptr<MutexLock>>;
392 using MutexUnlockVector = std::vector<std::shared_ptr<MutexUnlock>>;
393 using ConserveVector = std::vector<std::shared_ptr<Conserve>>;
394 using CompartmentVector = std::vector<std::shared_ptr<Compartment>>;
395 using LonDiffuseVector = std::vector<std::shared_ptr<LonDiffuse>>;
396 using ReactionStatementVector = std::vector<std::shared_ptr<ReactionStatement>>;
397 using LagStatementVector = std::vector<std::shared_ptr<LagStatement>>;
398 using ConstantStatementVector = std::vector<std::shared_ptr<ConstantStatement>>;
399 using TableStatementVector = std::vector<std::shared_ptr<TableStatement>>;
400 using SuffixVector = std::vector<std::shared_ptr<Suffix>>;
401 using UseionVector = std::vector<std::shared_ptr<Useion>>;
402 using NonspecificVector = std::vector<std::shared_ptr<Nonspecific>>;
403 using ElectrodeCurrentVector = std::vector<std::shared_ptr<ElectrodeCurrent>>;
404 using RangeVector = std::vector<std::shared_ptr<Range>>;
405 using GlobalVector = std::vector<std::shared_ptr<Global>>;
406 using RandomVarListVector = std::vector<std::shared_ptr<RandomVarList>>;
407 using PointerVector = std::vector<std::shared_ptr<Pointer>>;
408 using BbcorePointerVector = std::vector<std::shared_ptr<BbcorePointer>>;
409 using ExternalVector = std::vector<std::shared_ptr<External>>;
410 using ThreadSafeVector = std::vector<std::shared_ptr<ThreadSafe>>;
411 using VerbatimVector = std::vector<std::shared_ptr<Verbatim>>;
412 using LineCommentVector = std::vector<std::shared_ptr<LineComment>>;
413 using BlockCommentVector = std::vector<std::shared_ptr<BlockComment>>;
414 using OntologyStatementVector = std::vector<std::shared_ptr<OntologyStatement>>;
415 using ProgramVector = std::vector<std::shared_ptr<Program>>;
416 using NrnStateBlockVector = std::vector<std::shared_ptr<NrnStateBlock>>;
417 using EigenNewtonSolverBlockVector = std::vector<std::shared_ptr<EigenNewtonSolverBlock>>;
418 using EigenLinearSolverBlockVector = std::vector<std::shared_ptr<EigenLinearSolverBlock>>;
419 using CvodeBlockVector = std::vector<std::shared_ptr<CvodeBlock>>;
420 using LongitudinalDiffusionBlockVector = std::vector<std::shared_ptr<LongitudinalDiffusionBlock>>;
421 using WrappedExpressionVector = std::vector<std::shared_ptr<WrappedExpression>>;
422 using DerivimplicitCallbackVector = std::vector<std::shared_ptr<DerivimplicitCallback>>;
423 using SolutionExpressionVector = std::vector<std::shared_ptr<SolutionExpression>>;
424 using UpdateDtVector = std::vector<std::shared_ptr<UpdateDt>>;
425 
426 /** @} */ // end of ast_vec_type
427 
428 } // namespace ast
429 } // namespace nmodl
430 
AstNodeType
Enum type for every AST node type.
Definition: ast_decl.hpp:166
@ CONSTRUCTOR_BLOCK
type of ast::ConstructorBlock
@ ELSE_IF_STATEMENT
type of ast::ElseIfStatement
@ RANGE
type of ast::Range
@ BREAKPOINT_BLOCK
type of ast::BreakpointBlock
@ DERIVATIVE_BLOCK
type of ast::DerivativeBlock
@ UNIT_DEF
type of ast::UnitDef
@ SOLUTION_EXPRESSION
type of ast::SolutionExpression
@ VAR_NAME
type of ast::VarName
@ INCLUDE
type of ast::Include
@ STATEMENT_BLOCK
type of ast::StatementBlock
@ WATCH_STATEMENT
type of ast::WatchStatement
@ NODE
type of ast::Node
@ NONSPECIFIC_CUR_VAR
type of ast::NonspecificCurVar
@ THREAD_SAFE
type of ast::ThreadSafe
@ LIMITS
type of ast::Limits
@ BBCORE_POINTER_VAR
type of ast::BbcorePointerVar
@ REACT_VAR_NAME
type of ast::ReactVarName
@ WRAPPED_EXPRESSION
type of ast::WrappedExpression
@ MUTEX_UNLOCK
type of ast::MutexUnlock
@ STATEMENT
type of ast::Statement
@ ASSIGNED_DEFINITION
type of ast::AssignedDefinition
@ PARAM_BLOCK
type of ast::ParamBlock
@ PAREN_EXPRESSION
type of ast::ParenExpression
@ BINARY_OPERATOR
type of ast::BinaryOperator
@ SOLVE_BLOCK
type of ast::SolveBlock
@ NUMBER
type of ast::Number
@ CONSTANT_STATEMENT
type of ast::ConstantStatement
@ EXTERNAL
type of ast::External
@ POINTER_VAR
type of ast::PointerVar
@ READ_ION_VAR
type of ast::ReadIonVar
@ PARAM_ASSIGN
type of ast::ParamAssign
@ ONTOLOGY_STATEMENT
type of ast::OntologyStatement
@ ELSE_STATEMENT
type of ast::ElseStatement
@ BLOCK
type of ast::Block
@ BEFORE_BLOCK
type of ast::BeforeBlock
@ DESTRUCTOR_BLOCK
type of ast::DestructorBlock
@ UPDATE_DT
type of ast::UpdateDt
@ WHILE_STATEMENT
type of ast::WhileStatement
@ EIGEN_LINEAR_SOLVER_BLOCK
type of ast::EigenLinearSolverBlock
@ UNIT_STATE
type of ast::UnitState
@ DEFINE
type of ast::Define
@ IF_STATEMENT
type of ast::IfStatement
@ FUNCTION_TABLE_BLOCK
type of ast::FunctionTableBlock
@ UNARY_OPERATOR
type of ast::UnaryOperator
@ INTEGER
type of ast::Integer
@ RANDOM_VAR
type of ast::RandomVar
@ STRING
type of ast::String
@ REACTION_OPERATOR
type of ast::ReactionOperator
@ WRITE_ION_VAR
type of ast::WriteIonVar
@ CONSTANT_BLOCK
type of ast::ConstantBlock
@ ELECTRODE_CURRENT
type of ast::ElectrodeCurrent
@ GLOBAL
type of ast::Global
@ IDENTIFIER
type of ast::Identifier
@ DERIVIMPLICIT_CALLBACK
type of ast::DerivimplicitCallback
@ REACTION_STATEMENT
type of ast::ReactionStatement
@ ELECTRODE_CUR_VAR
type of ast::ElectrodeCurVar
@ CONDUCTANCE_HINT
type of ast::ConductanceHint
@ CONSTANT_VAR
type of ast::ConstantVar
@ BINARY_EXPRESSION
type of ast::BinaryExpression
@ MODEL
type of ast::Model
@ MUTEX_LOCK
type of ast::MutexLock
@ BA_BLOCK_TYPE
type of ast::BABlockType
@ UNARY_EXPRESSION
type of ast::UnaryExpression
@ ASSIGNED_BLOCK
type of ast::AssignedBlock
@ DISCRETE_BLOCK
type of ast::DiscreteBlock
@ CVODE_BLOCK
type of ast::CvodeBlock
@ ARGUMENT
type of ast::Argument
@ FACTOR_DEF
type of ast::FactorDef
@ INDEPENDENT_BLOCK
type of ast::IndependentBlock
@ NET_RECEIVE_BLOCK
type of ast::NetReceiveBlock
@ FROM_STATEMENT
type of ast::FromStatement
@ AFTER_BLOCK
type of ast::AfterBlock
@ INITIAL_BLOCK
type of ast::InitialBlock
@ UNIT_BLOCK
type of ast::UnitBlock
@ KINETIC_BLOCK
type of ast::KineticBlock
@ POINTER
type of ast::Pointer
@ RANGE_VAR
type of ast::RangeVar
@ NEURON_BLOCK
type of ast::NeuronBlock
@ EIGEN_NEWTON_SOLVER_BLOCK
type of ast::EigenNewtonSolverBlock
@ RANDOM_VAR_LIST
type of ast::RandomVarList
@ NAME
type of ast::Name
@ NON_LINEAR_BLOCK
type of ast::NonLinearBlock
@ STATE_BLOCK
type of ast::StateBlock
@ EXPRESSION_STATEMENT
type of ast::ExpressionStatement
@ FUNCTION_BLOCK
type of ast::FunctionBlock
@ LINE_COMMENT
type of ast::LineComment
@ DOUBLE_UNIT
type of ast::DoubleUnit
@ VERBATIM
type of ast::Verbatim
@ LON_DIFFUSE
type of ast::LonDiffuse
@ PROTECT_STATEMENT
type of ast::ProtectStatement
@ INDEXED_NAME
type of ast::IndexedName
@ TABLE_STATEMENT
type of ast::TableStatement
@ FOR_NETCON
type of ast::ForNetcon
@ BOOLEAN
type of ast::Boolean
@ PROGRAM
type of ast::Program
@ GLOBAL_VAR
type of ast::GlobalVar
@ USEION
type of ast::Useion
@ VALENCE
type of ast::Valence
@ SUFFIX
type of ast::Suffix
@ LINEAR_BLOCK
type of ast::LinearBlock
@ LONGITUDINAL_DIFFUSION_BLOCK
type of ast::LongitudinalDiffusionBlock
@ NONSPECIFIC
type of ast::Nonspecific
@ CONSERVE
type of ast::Conserve
@ NON_LIN_EQUATION
type of ast::NonLinEquation
@ LOCAL_LIST_STATEMENT
type of ast::LocalListStatement
@ LIN_EQUATION
type of ast::LinEquation
@ NUMBER_RANGE
type of ast::NumberRange
@ WATCH
type of ast::Watch
@ EXTERN_VAR
type of ast::ExternVar
@ FLOAT
type of ast::Float
@ EXPRESSION
type of ast::Expression
@ UNIT
type of ast::Unit
@ LAG_STATEMENT
type of ast::LagStatement
@ BBCORE_POINTER
type of ast::BbcorePointer
@ NRN_STATE_BLOCK
type of ast::NrnStateBlock
@ BA_BLOCK
type of ast::BABlock
@ PRIME_NAME
type of ast::PrimeName
@ BLOCK_COMMENT
type of ast::BlockComment
@ LOCAL_VAR
type of ast::LocalVar
@ COMPARTMENT
type of ast::Compartment
@ PROCEDURE_BLOCK
type of ast::ProcedureBlock
@ DOUBLE
type of ast::Double
@ FUNCTION_CALL
type of ast::FunctionCall
@ DIFF_EQ_EXPRESSION
type of ast::DiffEqExpression
std::vector< std::shared_ptr< Limits > > LimitsVector
Definition: ast_decl.hpp:357
std::vector< std::shared_ptr< ProcedureBlock > > ProcedureBlockVector
Definition: ast_decl.hpp:342
std::vector< std::shared_ptr< ReactionStatement > > ReactionStatementVector
Definition: ast_decl.hpp:396
std::vector< std::shared_ptr< UpdateDt > > UpdateDtVector
Definition: ast_decl.hpp:424
std::vector< std::shared_ptr< ReactVarName > > ReactVarNameVector
Definition: ast_decl.hpp:317
std::vector< std::shared_ptr< ElseIfStatement > > ElseIfStatementVector
Definition: ast_decl.hpp:388
std::vector< std::shared_ptr< Statement > > StatementVector
Definition: ast_decl.hpp:302
std::vector< std::shared_ptr< Argument > > ArgumentVector
Definition: ast_decl.hpp:316
std::vector< std::shared_ptr< SolveBlock > > SolveBlockVector
Definition: ast_decl.hpp:344
std::vector< std::shared_ptr< LonDiffuse > > LonDiffuseVector
Definition: ast_decl.hpp:395
std::vector< std::shared_ptr< NrnStateBlock > > NrnStateBlockVector
Definition: ast_decl.hpp:416
std::vector< std::shared_ptr< Identifier > > IdentifierVector
Definition: ast_decl.hpp:305
std::vector< std::shared_ptr< ThreadSafe > > ThreadSafeVector
Definition: ast_decl.hpp:410
std::vector< std::shared_ptr< WhileStatement > > WhileStatementVector
Definition: ast_decl.hpp:386
std::vector< std::shared_ptr< WrappedExpression > > WrappedExpressionVector
Definition: ast_decl.hpp:421
std::vector< std::shared_ptr< IfStatement > > IfStatementVector
Definition: ast_decl.hpp:387
std::vector< std::shared_ptr< Global > > GlobalVector
Definition: ast_decl.hpp:405
std::vector< std::shared_ptr< NonLinearBlock > > NonLinearBlockVector
Definition: ast_decl.hpp:338
std::vector< std::shared_ptr< ElseStatement > > ElseStatementVector
Definition: ast_decl.hpp:389
std::vector< std::shared_ptr< FunctionTableBlock > > FunctionTableBlockVector
Definition: ast_decl.hpp:340
std::vector< std::shared_ptr< FunctionBlock > > FunctionBlockVector
Definition: ast_decl.hpp:341
std::vector< std::shared_ptr< TableStatement > > TableStatementVector
Definition: ast_decl.hpp:399
std::vector< std::shared_ptr< ConstantVar > > ConstantVarVector
Definition: ast_decl.hpp:359
std::vector< std::shared_ptr< RangeVar > > RangeVarVector
Definition: ast_decl.hpp:322
std::vector< std::shared_ptr< NonLinEquation > > NonLinEquationVector
Definition: ast_decl.hpp:367
std::vector< std::shared_ptr< UnitBlock > > UnitBlockVector
Definition: ast_decl.hpp:351
std::vector< std::shared_ptr< NonspecificCurVar > > NonspecificCurVarVector
Definition: ast_decl.hpp:320
std::vector< std::shared_ptr< FunctionCall > > FunctionCallVector
Definition: ast_decl.hpp:369
std::vector< std::shared_ptr< LineComment > > LineCommentVector
Definition: ast_decl.hpp:412
std::vector< std::shared_ptr< ConductanceHint > > ConductanceHintVector
Definition: ast_decl.hpp:382
std::vector< std::shared_ptr< BinaryOperator > > BinaryOperatorVector
Definition: ast_decl.hpp:360
std::vector< std::shared_ptr< FactorDef > > FactorDefVector
Definition: ast_decl.hpp:373
std::vector< std::shared_ptr< LinEquation > > LinEquationVector
Definition: ast_decl.hpp:368
std::vector< std::shared_ptr< ParamBlock > > ParamBlockVector
Definition: ast_decl.hpp:328
std::vector< std::shared_ptr< ElectrodeCurrent > > ElectrodeCurrentVector
Definition: ast_decl.hpp:403
std::vector< std::shared_ptr< Define > > DefineVector
Definition: ast_decl.hpp:378
std::vector< std::shared_ptr< LongitudinalDiffusionBlock > > LongitudinalDiffusionBlockVector
Definition: ast_decl.hpp:420
std::vector< std::shared_ptr< WriteIonVar > > WriteIonVarVector
Definition: ast_decl.hpp:319
std::vector< std::shared_ptr< Float > > FloatVector
Definition: ast_decl.hpp:309
std::vector< std::shared_ptr< LocalListStatement > > LocalListStatementVector
Definition: ast_decl.hpp:376
std::vector< std::shared_ptr< Range > > RangeVector
Definition: ast_decl.hpp:404
std::vector< std::shared_ptr< ForNetcon > > ForNetconVector
Definition: ast_decl.hpp:349
std::vector< std::shared_ptr< BABlock > > BABlockVector
Definition: ast_decl.hpp:348
std::vector< std::shared_ptr< AssignedBlock > > AssignedBlockVector
Definition: ast_decl.hpp:330
std::vector< std::shared_ptr< NetReceiveBlock > > NetReceiveBlockVector
Definition: ast_decl.hpp:343
std::vector< std::shared_ptr< String > > StringVector
Definition: ast_decl.hpp:307
std::vector< std::shared_ptr< LocalVar > > LocalVarVector
Definition: ast_decl.hpp:356
std::vector< std::shared_ptr< BbcorePointerVar > > BbcorePointerVarVector
Definition: ast_decl.hpp:326
std::vector< std::shared_ptr< AfterBlock > > AfterBlockVector
Definition: ast_decl.hpp:347
std::vector< std::shared_ptr< KineticBlock > > KineticBlockVector
Definition: ast_decl.hpp:350
std::vector< std::shared_ptr< EigenNewtonSolverBlock > > EigenNewtonSolverBlockVector
Definition: ast_decl.hpp:417
std::vector< std::shared_ptr< BbcorePointer > > BbcorePointerVector
Definition: ast_decl.hpp:408
std::vector< std::shared_ptr< Include > > IncludeVector
Definition: ast_decl.hpp:379
std::vector< std::shared_ptr< Unit > > UnitVector
Definition: ast_decl.hpp:354
std::vector< std::shared_ptr< CvodeBlock > > CvodeBlockVector
Definition: ast_decl.hpp:419
std::vector< std::shared_ptr< Useion > > UseionVector
Definition: ast_decl.hpp:401
std::vector< std::shared_ptr< AssignedDefinition > > AssignedDefinitionVector
Definition: ast_decl.hpp:381
std::vector< std::shared_ptr< Number > > NumberVector
Definition: ast_decl.hpp:306
std::vector< std::shared_ptr< StatementBlock > > StatementBlockVector
Definition: ast_decl.hpp:335
std::vector< std::shared_ptr< MutexLock > > MutexLockVector
Definition: ast_decl.hpp:391
std::vector< std::shared_ptr< Verbatim > > VerbatimVector
Definition: ast_decl.hpp:411
std::vector< std::shared_ptr< Name > > NameVector
Definition: ast_decl.hpp:312
std::vector< std::shared_ptr< MutexUnlock > > MutexUnlockVector
Definition: ast_decl.hpp:392
std::vector< std::shared_ptr< RandomVar > > RandomVarVector
Definition: ast_decl.hpp:325
std::vector< std::shared_ptr< SolutionExpression > > SolutionExpressionVector
Definition: ast_decl.hpp:423
std::vector< std::shared_ptr< Watch > > WatchVector
Definition: ast_decl.hpp:370
std::vector< std::shared_ptr< PrimeName > > PrimeNameVector
Definition: ast_decl.hpp:313
std::vector< std::shared_ptr< BlockComment > > BlockCommentVector
Definition: ast_decl.hpp:413
std::vector< std::shared_ptr< Conserve > > ConserveVector
Definition: ast_decl.hpp:393
std::vector< std::shared_ptr< IndexedName > > IndexedNameVector
Definition: ast_decl.hpp:314
std::vector< std::shared_ptr< VarName > > VarNameVector
Definition: ast_decl.hpp:315
std::vector< std::shared_ptr< BreakpointBlock > > BreakpointBlockVector
Definition: ast_decl.hpp:345
std::vector< std::shared_ptr< NeuronBlock > > NeuronBlockVector
Definition: ast_decl.hpp:353
std::vector< std::shared_ptr< LagStatement > > LagStatementVector
Definition: ast_decl.hpp:397
std::vector< std::shared_ptr< StateBlock > > StateBlockVector
Definition: ast_decl.hpp:331
std::vector< std::shared_ptr< ExpressionStatement > > ExpressionStatementVector
Definition: ast_decl.hpp:383
std::vector< std::shared_ptr< ExternVar > > ExternVarVector
Definition: ast_decl.hpp:327
std::vector< std::shared_ptr< FromStatement > > FromStatementVector
Definition: ast_decl.hpp:385
std::vector< std::shared_ptr< DiffEqExpression > > DiffEqExpressionVector
Definition: ast_decl.hpp:365
std::vector< std::shared_ptr< Valence > > ValenceVector
Definition: ast_decl.hpp:374
std::vector< std::shared_ptr< LinearBlock > > LinearBlockVector
Definition: ast_decl.hpp:337
std::vector< std::shared_ptr< DerivativeBlock > > DerivativeBlockVector
Definition: ast_decl.hpp:336
std::vector< std::shared_ptr< Nonspecific > > NonspecificVector
Definition: ast_decl.hpp:402
std::vector< std::shared_ptr< External > > ExternalVector
Definition: ast_decl.hpp:409
std::vector< std::shared_ptr< Boolean > > BooleanVector
Definition: ast_decl.hpp:311
std::vector< std::shared_ptr< UnaryOperator > > UnaryOperatorVector
Definition: ast_decl.hpp:361
std::vector< std::shared_ptr< NumberRange > > NumberRangeVector
Definition: ast_decl.hpp:358
std::vector< std::shared_ptr< InitialBlock > > InitialBlockVector
Definition: ast_decl.hpp:332
std::vector< std::shared_ptr< ReadIonVar > > ReadIonVarVector
Definition: ast_decl.hpp:318
std::vector< std::shared_ptr< WatchStatement > > WatchStatementVector
Definition: ast_decl.hpp:390
std::vector< std::shared_ptr< Block > > BlockVector
Definition: ast_decl.hpp:304
std::vector< std::shared_ptr< Model > > ModelVector
Definition: ast_decl.hpp:377
std::vector< std::shared_ptr< UnaryExpression > > UnaryExpressionVector
Definition: ast_decl.hpp:366
std::vector< std::shared_ptr< BABlockType > > BABlockTypeVector
Definition: ast_decl.hpp:371
std::vector< std::shared_ptr< ConstantBlock > > ConstantBlockVector
Definition: ast_decl.hpp:352
std::vector< std::shared_ptr< ReactionOperator > > ReactionOperatorVector
Definition: ast_decl.hpp:362
std::vector< std::shared_ptr< DoubleUnit > > DoubleUnitVector
Definition: ast_decl.hpp:355
std::vector< std::shared_ptr< OntologyStatement > > OntologyStatementVector
Definition: ast_decl.hpp:414
std::vector< std::shared_ptr< Node > > NodeVector
Definition: ast_decl.hpp:301
std::vector< std::shared_ptr< ParenExpression > > ParenExpressionVector
Definition: ast_decl.hpp:363
std::vector< std::shared_ptr< GlobalVar > > GlobalVarVector
Definition: ast_decl.hpp:323
std::vector< std::shared_ptr< ConstantStatement > > ConstantStatementVector
Definition: ast_decl.hpp:398
std::vector< std::shared_ptr< Double > > DoubleVector
Definition: ast_decl.hpp:310
std::vector< std::shared_ptr< PointerVar > > PointerVarVector
Definition: ast_decl.hpp:324
std::vector< std::shared_ptr< BinaryExpression > > BinaryExpressionVector
Definition: ast_decl.hpp:364
std::vector< std::shared_ptr< Compartment > > CompartmentVector
Definition: ast_decl.hpp:394
std::vector< std::shared_ptr< DestructorBlock > > DestructorBlockVector
Definition: ast_decl.hpp:334
std::vector< std::shared_ptr< UnitDef > > UnitDefVector
Definition: ast_decl.hpp:372
std::vector< std::shared_ptr< ProtectStatement > > ProtectStatementVector
Definition: ast_decl.hpp:384
std::vector< std::shared_ptr< Expression > > ExpressionVector
Definition: ast_decl.hpp:303
std::vector< std::shared_ptr< ConstructorBlock > > ConstructorBlockVector
Definition: ast_decl.hpp:333
std::vector< std::shared_ptr< ElectrodeCurVar > > ElectrodeCurVarVector
Definition: ast_decl.hpp:321
std::vector< std::shared_ptr< Program > > ProgramVector
Definition: ast_decl.hpp:415
std::vector< std::shared_ptr< EigenLinearSolverBlock > > EigenLinearSolverBlockVector
Definition: ast_decl.hpp:418
std::vector< std::shared_ptr< UnitState > > UnitStateVector
Definition: ast_decl.hpp:375
std::vector< std::shared_ptr< Pointer > > PointerVector
Definition: ast_decl.hpp:407
std::vector< std::shared_ptr< DiscreteBlock > > DiscreteBlockVector
Definition: ast_decl.hpp:339
std::vector< std::shared_ptr< DerivimplicitCallback > > DerivimplicitCallbackVector
Definition: ast_decl.hpp:422
std::vector< std::shared_ptr< RandomVarList > > RandomVarListVector
Definition: ast_decl.hpp:406
std::vector< std::shared_ptr< Integer > > IntegerVector
Definition: ast_decl.hpp:308
std::vector< std::shared_ptr< IndependentBlock > > IndependentBlockVector
Definition: ast_decl.hpp:329
std::vector< std::shared_ptr< BeforeBlock > > BeforeBlockVector
Definition: ast_decl.hpp:346
std::vector< std::shared_ptr< ParamAssign > > ParamAssignVector
Definition: ast_decl.hpp:380
std::vector< std::shared_ptr< Suffix > > SuffixVector
Definition: ast_decl.hpp:400
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
Definition: section.h:105