diff --git a/html/doxygen/annotated.html b/html/doxygen/annotated.html index 3db76f14cf..957f600381 100644 --- a/html/doxygen/annotated.html +++ b/html/doxygen/annotated.html @@ -289,38 +289,39 @@  CDefUseAnalyzeVisitorVisitor to return Def-Use chain for a given variable in the block/node  CDUChainDef-Use chain for an AST node  CDUInstanceRepresent use of a variable in the statement - CGlobalToRangeVisitorVisitor to convert GLOBAL variables to RANGE variables - CImplicitArgumentVisitorVisitor for adding implicit arguments to [Core]NEURON functions - CIndexedNameVisitorGet node name with indexed for the IndexedName node and the dependencies of DiffEqExpression node - CIndexRemoverHelper visitor to replace index of array variable with integer - CInlineVisitorVisitor to inline local procedure and function calls - CJSONVisitorVisitor for printing AST in JSON format - CKineticBlockVisitorVisitor for kinetic block statements - CRateEqsStochiometric matrices nu_L, nu_R forwards/backwards fluxes k_f, k_b (see kinetic_schemes.ipynb notebook for details) - CLocalizeVisitorVisitor to transform global variable usage to local - CLocalToAssignedVisitorVisitor to convert top level LOCAL variables to ASSIGNED variables - CLocalVarRenameVisitorVisitor to rename local variables conflicting with global scope - CLoopUnrollVisitorUnroll for loop in the AST - CMetaAstLookupVisitor - Cidentity - CNeuronSolveVisitorVisitor that solves ODEs using old solvers of NEURON - CNmodlPrintVisitorVisitor for printing AST back to NMODL - CPerfVisitorVisitor for measuring performance related information - CRenameVisitorBlindly rename given variable to new name - CSemanticAnalysisVisitor - CSolveBlockVisitorReplace solve block statements with actual solution node in the AST - CSteadystateVisitorVisitor for STEADYSTATE solve statements - CSympyConductanceVisitorVisitor for generating CONDUCTANCE statements for ions - CSympyReplaceSolutionsVisitorReplace statements in node with pre_solve_statements, tmp_statements, and solutions - CInterleavesCounterCount interleaves of assignment statement inside the system of equations - CStatementDispenserSorts and maps statements to variables keeping track of what needs updating - CSympySolverVisitorVisitor for systems of algebraic and differential equations - CSymtabVisitorConcrete visitor for constructing symbol table from AST - CUnitsVisitorVisitor for Units blocks of AST - CVarUsageVisitorCheck if variable is used in given block - CVerbatimVarRenameVisitorRename variable in verbatim block - CVerbatimVisitorVisitor for verbatim blocks of AST - CVisitorAbstract base class for all visitors implementation + CFunctionCallpathVisitorVisitor for traversing FunctionBlock s and ProcedureBlocks through their FunctionCall s + CGlobalToRangeVisitorVisitor to convert GLOBAL variables to RANGE variables + CImplicitArgumentVisitorVisitor for adding implicit arguments to [Core]NEURON functions + CIndexedNameVisitorGet node name with indexed for the IndexedName node and the dependencies of DiffEqExpression node + CIndexRemoverHelper visitor to replace index of array variable with integer + CInlineVisitorVisitor to inline local procedure and function calls + CJSONVisitorVisitor for printing AST in JSON format + CKineticBlockVisitorVisitor for kinetic block statements + CRateEqsStochiometric matrices nu_L, nu_R forwards/backwards fluxes k_f, k_b (see kinetic_schemes.ipynb notebook for details) + CLocalizeVisitorVisitor to transform global variable usage to local + CLocalToAssignedVisitorVisitor to convert top level LOCAL variables to ASSIGNED variables + CLocalVarRenameVisitorVisitor to rename local variables conflicting with global scope + CLoopUnrollVisitorUnroll for loop in the AST + CMetaAstLookupVisitor + Cidentity + CNeuronSolveVisitorVisitor that solves ODEs using old solvers of NEURON + CNmodlPrintVisitorVisitor for printing AST back to NMODL + CPerfVisitorVisitor for measuring performance related information + CRenameVisitorBlindly rename given variable to new name + CSemanticAnalysisVisitor + CSolveBlockVisitorReplace solve block statements with actual solution node in the AST + CSteadystateVisitorVisitor for STEADYSTATE solve statements + CSympyConductanceVisitorVisitor for generating CONDUCTANCE statements for ions + CSympyReplaceSolutionsVisitorReplace statements in node with pre_solve_statements, tmp_statements, and solutions + CInterleavesCounterCount interleaves of assignment statement inside the system of equations + CStatementDispenserSorts and maps statements to variables keeping track of what needs updating + CSympySolverVisitorVisitor for systems of algebraic and differential equations + CSymtabVisitorConcrete visitor for constructing symbol table from AST + CUnitsVisitorVisitor for Units blocks of AST + CVarUsageVisitorCheck if variable is used in given block + CVerbatimVarRenameVisitorRename variable in verbatim block + CVerbatimVisitorVisitor for verbatim blocks of AST + CVisitorAbstract base class for all visitors implementation  CCMakeInfo  CCodegenTransformVisitorVisitor to make last transformation to AST before codegen  CFileLibraryManage search path diff --git a/html/doxygen/classes.html b/html/doxygen/classes.html index 0afe696016..fa4f6da78a 100644 --- a/html/doxygen/classes.html +++ b/html/doxygen/classes.html @@ -99,319 +99,320 @@
  a  
DefUseAnalyzeVisitor (nmodl::visitor)    +IndexedNameVisitor (nmodl::visitor)    +NonLinearBlock (nmodl::ast)    +StatementBlock (nmodl::ast)    + +DerivativeBlock (nmodl::ast)    IndexRemover (nmodl::visitor)    NonLinEquation (nmodl::ast)    SympyReplaceSolutionsVisitor::StatementDispenser (nmodl::visitor)    -DerivativeBlock (nmodl::ast)    +AfterBlock (nmodl::ast)    +DerivimplicitCallback (nmodl::ast)    IndexSemantics (nmodl::codegen)    Nonspecific (nmodl::ast)    SteadystateVisitor (nmodl::visitor)    -AfterBlock (nmodl::ast)    -DerivimplicitCallback (nmodl::ast)    +AfterCVodeToCnexpVisitor (nmodl::visitor)    +DestructorBlock (nmodl::ast)    IndexVariableInfo (nmodl::codegen)    NonspecificCurVar (nmodl::ast)    String (nmodl::ast)    -AfterCVodeToCnexpVisitor (nmodl::visitor)    -DestructorBlock (nmodl::ast)    +AnalyticDiffExecutor (nmodl::pybind_wrappers)    +DiffEqContext (nmodl::parser::diffeq)    InitialBlock (nmodl::ast)    NrnStateBlock (nmodl::ast)    Suffix (nmodl::ast)    -AnalyticDiffExecutor (nmodl::pybind_wrappers)    -DiffEqContext (nmodl::parser::diffeq)    +Argument (nmodl::ast)    +DiffeqDriver (nmodl::parser)    InlineVisitor (nmodl::visitor)    NrnUnitsLib (nmodl)    Symbol (nmodl::symtab)    -Argument (nmodl::ast)    -DiffeqDriver (nmodl::parser)    +AssignedBlock (nmodl::ast)    +DiffEqExpression (nmodl::ast)    Integer (nmodl::ast)    Number (nmodl::ast)    SymbolTable (nmodl::symtab)    -AssignedBlock (nmodl::ast)    -DiffEqExpression (nmodl::ast)    +AssignedDefinition (nmodl::ast)    +DiffeqLexer (nmodl::parser)    SympyReplaceSolutionsVisitor::InterleavesCounter (nmodl::visitor)    NumberRange (nmodl::ast)    SympyConductanceVisitor (nmodl::visitor)    -AssignedDefinition (nmodl::ast)    -DiffeqLexer (nmodl::parser)    +Ast (nmodl::ast)    +DiffeqSolverExecutor (nmodl::pybind_wrappers)    Ion (nmodl::codegen)   
  o  
SympyReplaceSolutionsVisitor (nmodl::visitor)    -Ast (nmodl::ast)    -DiffeqSolverExecutor (nmodl::pybind_wrappers)    +AstLookupVisitor    +DiffEqTestCase (nmodl::test_utils)   
  j  
SympySolverVisitor (nmodl::visitor)    -AstLookupVisitor    -DiffEqTestCase (nmodl::test_utils)    +AstVisitor (nmodl::visitor)    +DiscreteBlock (nmodl::ast)    OntologyStatement (nmodl::ast)    SymtabVisitor (nmodl::visitor)    -AstVisitor (nmodl::visitor)    -DiscreteBlock (nmodl::ast)    +
  b  
+ +Double (nmodl::ast)    JSONPrinter (nmodl::printer)   
  p  
  t  
-
  b  
- -Double (nmodl::ast)    +DoubleUnit (nmodl::ast)    JSONVisitor (nmodl::visitor)    -DoubleUnit (nmodl::ast)    +BABlock (nmodl::ast)    +DUChain (nmodl::visitor)   
  k  
ParamAssign (nmodl::ast)    SymbolTable::Table (nmodl::symtab)    -BABlock (nmodl::ast)    -DUChain (nmodl::visitor)    +BABlockType (nmodl::ast)    +DUInstance (nmodl::visitor)    ParamBlock (nmodl::ast)    TableData (nmodl::utils)    -BABlockType (nmodl::ast)    -DUInstance (nmodl::visitor)    +BbcorePointer (nmodl::ast)    +
  e  
+ KineticBlock (nmodl::ast)    ParenExpression (nmodl::ast)    TableStatement (nmodl::ast)    -BbcorePointer (nmodl::ast)    -
  e  
- +BbcorePointerVar (nmodl::ast)    KineticBlockVisitor (nmodl::visitor)    PerfStat (nmodl::utils)    TempFile (nmodl::test_utils)    -BbcorePointerVar (nmodl::ast)    +BeforeBlock (nmodl::ast)    +EigenLinearSolverBlock (nmodl::ast)   
  l  
PerfVisitor (nmodl::visitor)    Term (nmodl::parser::diffeq)    -BeforeBlock (nmodl::ast)    -EigenLinearSolverBlock (nmodl::ast)    +BinaryExpression (nmodl::ast)    +EigenNewtonSolverBlock (nmodl::ast)    Pointer (nmodl::ast)    ThreadSafe (nmodl::ast)    -BinaryExpression (nmodl::ast)    -EigenNewtonSolverBlock (nmodl::ast)    +BinaryOperator (nmodl::ast)    +ElectrodeCurrent (nmodl::ast)    LagStatement (nmodl::ast)    PointerVar (nmodl::ast)   
  u  
-BinaryOperator (nmodl::ast)    -ElectrodeCurrent (nmodl::ast)    +Block (nmodl::ast)    +ElectrodeCurVar (nmodl::ast)    Limits (nmodl::ast)    Prefix (nmodl::units)    -Block (nmodl::ast)    -ElectrodeCurVar (nmodl::ast)    +BlockComment (nmodl::ast)    +ElseIfStatement (nmodl::ast)    LinearBlock (nmodl::ast)    PrimeName (nmodl::ast)    UnaryExpression (nmodl::ast)    -BlockComment (nmodl::ast)    -ElseIfStatement (nmodl::ast)    +Boolean (nmodl::ast)    +ElseStatement (nmodl::ast)    LineComment (nmodl::ast)    ProcedureBlock (nmodl::ast)    UnaryOperator (nmodl::ast)    -Boolean (nmodl::ast)    -ElseStatement (nmodl::ast)    -LinEquation (nmodl::ast)    -Program (nmodl::ast)    -Unit (nmodl::ast)    - BreakpointBlock (nmodl::ast)    EmbeddedPythonLoader (nmodl::pybind_wrappers)    -LocalizeVisitor (nmodl::visitor)    -ProtectStatement (nmodl::ast)    +LinEquation (nmodl::ast)    +Program (nmodl::ast)    Unit (nmodl::units)   
  c  
Expression (nmodl::ast)    +LocalizeVisitor (nmodl::visitor)    +ProtectStatement (nmodl::ast)    +Unit (nmodl::ast)    + +ExpressionStatement (nmodl::ast)    LocalListStatement (nmodl::ast)    pybind_wrap_api (nmodl::pybind_wrappers)    UnitBlock (nmodl::ast)    -ExpressionStatement (nmodl::ast)    +CDriver (nmodl::parser)    +External (nmodl::ast)    LocalToAssignedVisitor (nmodl::visitor)    PyNmodlDriver (nmodl)    UnitDef (nmodl::ast)    -CDriver (nmodl::parser)    -External (nmodl::ast)    +CheckParentVisitor (nmodl::visitor::test)    +ExternVar (nmodl::ast)    LocalVar (nmodl::ast)    PythonExecutor (nmodl::pybind_wrappers)    UnitDriver (nmodl::parser)    -CheckParentVisitor (nmodl::visitor::test)    -ExternVar (nmodl::ast)    +ClassInfo    +
  f  
+ LocalVarRenameVisitor (nmodl::visitor)   
  r  
UnitLexer (nmodl::parser)    -ClassInfo    -
  f  
- +CLexer (nmodl::parser)    Logger (nmodl)    UnitState (nmodl::ast)    -CLexer (nmodl::parser)    +CMakeInfo (nmodl)    +FactorDef (nmodl::ast)    LonDifuse (nmodl::ast)    RandomVar (nmodl::ast)    UnitsVisitor (nmodl::visitor)    -CMakeInfo (nmodl)    -FactorDef (nmodl::ast)    +CodegenAccVisitor (nmodl::codegen)    +FileLibrary (nmodl)    LoopUnrollVisitor (nmodl::visitor)    RandomVarList (nmodl::ast)    UnitTable (nmodl::units)    -CodegenAccVisitor (nmodl::codegen)    -FileLibrary (nmodl)    +CodegenCompatibilityVisitor (nmodl::codegen)    +Float (nmodl::ast)   
  m  
Range (nmodl::ast)    UpdateDt (nmodl::ast)    -CodegenCompatibilityVisitor (nmodl::codegen)    -Float (nmodl::ast)    +CodegenCoreneuronCppVisitor (nmodl::codegen)    +ForNetcon (nmodl::ast)    RangeVar (nmodl::ast)    Useion (nmodl::ast)    -CodegenCoreneuronCppVisitor (nmodl::codegen)    -ForNetcon (nmodl::ast)    +CodegenCppVisitor (nmodl::codegen)    +FromStatement (nmodl::ast)    MetaAstLookupVisitor (nmodl::visitor)    KineticBlockVisitor::RateEqs (nmodl::visitor)   
  v  
-CodegenCppVisitor (nmodl::codegen)    -FromStatement (nmodl::ast)    +CodegenHelperVisitor (nmodl::codegen)    +FunctionBlock (nmodl::ast)    MethodInfo (nmodl::details)    ReactionOperator (nmodl::ast)    -CodegenHelperVisitor (nmodl::codegen)    -FunctionBlock (nmodl::ast)    +CodegenInfo (nmodl::codegen)    +FunctionCall (nmodl::ast)    Model (nmodl::ast)    ReactionStatement (nmodl::ast)    Valence (nmodl::ast)    -CodegenInfo (nmodl::codegen)    -FunctionCall (nmodl::ast)    +CodegenNeuronCppVisitor (nmodl::codegen)    +FunctionCallpathVisitor (nmodl::visitor)    ModelSymbolTable (nmodl::symtab)    ReactVarName (nmodl::ast)    VarName (nmodl::ast)    -CodegenNeuronCppVisitor (nmodl::codegen)    +CodegenTransformVisitor (nmodl)    FunctionTableBlock (nmodl::ast)    ModToken (nmodl)    ReadIonVar (nmodl::ast)    VarUsageVisitor (nmodl::visitor)    -CodegenTransformVisitor (nmodl)    +CodePrinter (nmodl::printer)   
  g  
MutexLock (nmodl::ast)    RenameVisitor (nmodl::visitor)    Verbatim (nmodl::ast)    -CodePrinter (nmodl::printer)    +Compartment (nmodl::ast)    MutexUnlock (nmodl::ast)   
  s  
VerbatimDriver (nmodl::parser)    -Compartment (nmodl::ast)    +Conductance (nmodl::codegen)    Global (nmodl::ast)   
  n  
VerbatimVarRenameVisitor (nmodl::visitor)    -Conductance (nmodl::codegen)    +ConductanceHint (nmodl::ast)    GlobalToRangeVisitor (nmodl::visitor)    SemanticAnalysisVisitor (nmodl::visitor)    VerbatimVisitor (nmodl::visitor)    -ConductanceHint (nmodl::ast)    +Conserve (nmodl::ast)    GlobalVar (nmodl::ast)    Name (nmodl::ast)    SemanticAnalysisVisitor    Version (nmodl)    -Conserve (nmodl::ast)    +ConstantBlock (nmodl::ast)   
  i  
NetReceiveBlock (nmodl::ast)    ShadowUseStatement (nmodl::codegen)    Visitor (nmodl::visitor)    -ConstantBlock (nmodl::ast)    +ConstantFolderVisitor (nmodl::visitor)    NeuronBlock (nmodl::ast)    SingletonRandomString (nmodl::utils)   
  w  
-ConstantFolderVisitor (nmodl::visitor)    +ConstantStatement (nmodl::ast)    Identifier (nmodl::ast)    NeuronSolveVisitor (nmodl::visitor)    SolutionExpression (nmodl::ast)    -ConstantStatement (nmodl::ast)    +ConstantVar (nmodl::ast)    MetaAstLookupVisitor::identity (nmodl::visitor)    NmodlDriver (nmodl::parser)    SolveBlock (nmodl::ast)    Watch (nmodl::ast)    -ConstantVar (nmodl::ast)    +ConstAstVisitor (nmodl::visitor)    IfStatement (nmodl::ast)    NmodlLexer (nmodl::parser)    SolveBlockVisitor (nmodl::visitor)    WatchStatement (nmodl::ast)    -ConstAstVisitor (nmodl::visitor)    +ConstructorBlock (nmodl::ast)    ImplicitArgumentVisitor (nmodl::visitor)    NMODLPrinter (nmodl::printer)    SolveLinearSystemExecutor (nmodl::pybind_wrappers)    WhileStatement (nmodl::ast)    -ConstructorBlock (nmodl::ast)    +ConstVisitor (nmodl::visitor)    Include (nmodl::ast)    NmodlPrintVisitor (nmodl::visitor)    SolveNonLinearSystemExecutor (nmodl::pybind_wrappers)    WrappedExpression (nmodl::ast)    -ConstVisitor (nmodl::visitor)    +
  d  
+ IndependentBlock (nmodl::ast)    NmodlTestCase (nmodl::test_utils)    StateBlock (nmodl::ast)    WriteIonVar (nmodl::ast)    -
  d  
- -IndexedName (nmodl::ast)    +IndexedName (nmodl::ast)    Node (nmodl::ast)    Statement (nmodl::ast)    -IndexedNameVisitor (nmodl::visitor)    -NonLinearBlock (nmodl::ast)    -StatementBlock (nmodl::ast)    - Define (nmodl::ast)    diff --git a/html/doxygen/classnmodl_1_1visitor_1_1_const_ast_visitor.html b/html/doxygen/classnmodl_1_1visitor_1_1_const_ast_visitor.html index b040a5de16..8127274643 100644 --- a/html/doxygen/classnmodl_1_1visitor_1_1_const_ast_visitor.html +++ b/html/doxygen/classnmodl_1_1visitor_1_1_const_ast_visitor.html @@ -116,14 +116,15 @@ nmodl::codegen::CodegenCppVisitor nmodl::codegen::CodegenHelperVisitor nmodl::visitor::DefUseAnalyzeVisitor -nmodl::visitor::JSONVisitor -nmodl::visitor::LocalizeVisitor -nmodl::visitor::PerfVisitor -nmodl::visitor::RenameVisitor -nmodl::visitor::SemanticAnalysisVisitor -nmodl::visitor::test::CheckParentVisitor -nmodl::visitor::VarUsageVisitor -nmodl::visitor::VerbatimVisitor +nmodl::visitor::FunctionCallpathVisitor +nmodl::visitor::JSONVisitor +nmodl::visitor::LocalizeVisitor +nmodl::visitor::PerfVisitor +nmodl::visitor::RenameVisitor +nmodl::visitor::SemanticAnalysisVisitor +nmodl::visitor::test::CheckParentVisitor +nmodl::visitor::VarUsageVisitor +nmodl::visitor::VerbatimVisitor diff --git a/html/doxygen/classnmodl_1_1visitor_1_1_const_ast_visitor.png b/html/doxygen/classnmodl_1_1visitor_1_1_const_ast_visitor.png index 0a8c1412fd..9f083da885 100644 Binary files a/html/doxygen/classnmodl_1_1visitor_1_1_const_ast_visitor.png and b/html/doxygen/classnmodl_1_1visitor_1_1_const_ast_visitor.png differ diff --git a/html/doxygen/classnmodl_1_1visitor_1_1_const_visitor.html b/html/doxygen/classnmodl_1_1visitor_1_1_const_visitor.html index 3f698045d0..fc7aeff10e 100644 --- a/html/doxygen/classnmodl_1_1visitor_1_1_const_visitor.html +++ b/html/doxygen/classnmodl_1_1visitor_1_1_const_visitor.html @@ -119,14 +119,15 @@ nmodl::codegen::CodegenCppVisitornmodl::codegen::CodegenHelperVisitornmodl::visitor::DefUseAnalyzeVisitor -nmodl::visitor::JSONVisitor -nmodl::visitor::LocalizeVisitor -nmodl::visitor::PerfVisitor -nmodl::visitor::RenameVisitor -nmodl::visitor::SemanticAnalysisVisitor -nmodl::visitor::test::CheckParentVisitor -nmodl::visitor::VarUsageVisitor -nmodl::visitor::VerbatimVisitor +nmodl::visitor::FunctionCallpathVisitor +nmodl::visitor::JSONVisitor +nmodl::visitor::LocalizeVisitor +nmodl::visitor::PerfVisitor +nmodl::visitor::RenameVisitor +nmodl::visitor::SemanticAnalysisVisitor +nmodl::visitor::test::CheckParentVisitor +nmodl::visitor::VarUsageVisitor +nmodl::visitor::VerbatimVisitor
@@ -1874,7 +1875,7 @@

ast::FunctionBlock

-

Implemented in nmodl::visitor::test::CheckParentVisitor, nmodl::visitor::PerfVisitor, nmodl::visitor::ConstAstVisitor, nmodl::visitor::JSONVisitor, nmodl::visitor::NmodlPrintVisitor, nmodl::codegen::CodegenHelperVisitor, and nmodl::visitor::SemanticAnalysisVisitor.

+

Implemented in nmodl::visitor::test::CheckParentVisitor, nmodl::visitor::PerfVisitor, nmodl::visitor::ConstAstVisitor, nmodl::visitor::JSONVisitor, nmodl::visitor::NmodlPrintVisitor, nmodl::codegen::CodegenHelperVisitor, nmodl::visitor::SemanticAnalysisVisitor, and nmodl::visitor::FunctionCallpathVisitor.

@@ -1904,7 +1905,7 @@

ast::FunctionCall

-

Implemented in nmodl::codegen::CodegenCppVisitor, nmodl::visitor::test::CheckParentVisitor, nmodl::visitor::DefUseAnalyzeVisitor, nmodl::visitor::ConstAstVisitor, nmodl::visitor::PerfVisitor, nmodl::visitor::JSONVisitor, nmodl::visitor::NmodlPrintVisitor, nmodl::visitor::SemanticAnalysisVisitor, and nmodl::codegen::CodegenHelperVisitor.

+

Implemented in nmodl::codegen::CodegenCppVisitor, nmodl::visitor::test::CheckParentVisitor, nmodl::visitor::DefUseAnalyzeVisitor, nmodl::visitor::ConstAstVisitor, nmodl::visitor::PerfVisitor, nmodl::visitor::JSONVisitor, nmodl::visitor::NmodlPrintVisitor, nmodl::visitor::SemanticAnalysisVisitor, nmodl::codegen::CodegenHelperVisitor, and nmodl::visitor::FunctionCallpathVisitor.

@@ -3134,7 +3135,7 @@

ast::ProcedureBlock

-

Implemented in nmodl::visitor::test::CheckParentVisitor, nmodl::visitor::PerfVisitor, nmodl::visitor::ConstAstVisitor, nmodl::visitor::JSONVisitor, nmodl::visitor::NmodlPrintVisitor, nmodl::codegen::CodegenHelperVisitor, and nmodl::visitor::SemanticAnalysisVisitor.

+

Implemented in nmodl::visitor::test::CheckParentVisitor, nmodl::visitor::PerfVisitor, nmodl::visitor::ConstAstVisitor, nmodl::visitor::JSONVisitor, nmodl::visitor::NmodlPrintVisitor, nmodl::codegen::CodegenHelperVisitor, nmodl::visitor::SemanticAnalysisVisitor, and nmodl::visitor::FunctionCallpathVisitor.

@@ -3164,7 +3165,7 @@

ast::Program

-

Implemented in nmodl::codegen::CodegenCppVisitor, nmodl::visitor::test::CheckParentVisitor, nmodl::visitor::ConstAstVisitor, nmodl::visitor::PerfVisitor, nmodl::visitor::JSONVisitor, nmodl::visitor::NmodlPrintVisitor, nmodl::codegen::CodegenHelperVisitor, nmodl::visitor::LocalizeVisitor, and nmodl::visitor::SemanticAnalysisVisitor.

+

Implemented in nmodl::codegen::CodegenCppVisitor, nmodl::visitor::test::CheckParentVisitor, nmodl::visitor::ConstAstVisitor, nmodl::visitor::PerfVisitor, nmodl::visitor::JSONVisitor, nmodl::visitor::NmodlPrintVisitor, nmodl::codegen::CodegenHelperVisitor, nmodl::visitor::LocalizeVisitor, nmodl::visitor::SemanticAnalysisVisitor, and nmodl::visitor::FunctionCallpathVisitor.

@@ -4004,7 +4005,7 @@

ast::VarName

-

Implemented in nmodl::codegen::CodegenCppVisitor, nmodl::visitor::DefUseAnalyzeVisitor, nmodl::visitor::ConstAstVisitor, nmodl::visitor::test::CheckParentVisitor, nmodl::visitor::JSONVisitor, and nmodl::visitor::NmodlPrintVisitor.

+

Implemented in nmodl::codegen::CodegenCppVisitor, nmodl::visitor::DefUseAnalyzeVisitor, nmodl::visitor::ConstAstVisitor, nmodl::visitor::test::CheckParentVisitor, nmodl::visitor::JSONVisitor, nmodl::visitor::NmodlPrintVisitor, and nmodl::visitor::FunctionCallpathVisitor.

diff --git a/html/doxygen/classnmodl_1_1visitor_1_1_const_visitor.png b/html/doxygen/classnmodl_1_1visitor_1_1_const_visitor.png index e1b274ac45..ef73093ba3 100644 Binary files a/html/doxygen/classnmodl_1_1visitor_1_1_const_visitor.png and b/html/doxygen/classnmodl_1_1visitor_1_1_const_visitor.png differ diff --git a/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor-members.html b/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor-members.html new file mode 100644 index 0000000000..9edc60ceda --- /dev/null +++ b/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor-members.html @@ -0,0 +1,240 @@ + + + + + + + +User Guide: Member List + + + + + + + + + + + + + + + + +
+
+

+ + + + + + +
+
User Guide +
+
+ + + + + + + + + +
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
nmodl::visitor::FunctionCallpathVisitor Member List
+
+
+ +

This is the complete list of members for nmodl::visitor::FunctionCallpathVisitor, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
psymtabnmodl::visitor::FunctionCallpathVisitorprivate
visit_after_block(const ast::AfterBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_argument(const ast::Argument &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_assigned_block(const ast::AssignedBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_assigned_definition(const ast::AssignedDefinition &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_ba_block(const ast::BABlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_ba_block_type(const ast::BABlockType &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_bbcore_pointer(const ast::BbcorePointer &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_bbcore_pointer_var(const ast::BbcorePointerVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_before_block(const ast::BeforeBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_binary_expression(const ast::BinaryExpression &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_binary_operator(const ast::BinaryOperator &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_block(const ast::Block &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_block_comment(const ast::BlockComment &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_boolean(const ast::Boolean &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_breakpoint_block(const ast::BreakpointBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_compartment(const ast::Compartment &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_conductance_hint(const ast::ConductanceHint &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_conserve(const ast::Conserve &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_constant_block(const ast::ConstantBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_constant_statement(const ast::ConstantStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_constant_var(const ast::ConstantVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_constructor_block(const ast::ConstructorBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_define(const ast::Define &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_derivative_block(const ast::DerivativeBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_derivimplicit_callback(const ast::DerivimplicitCallback &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_destructor_block(const ast::DestructorBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_diff_eq_expression(const ast::DiffEqExpression &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_discrete_block(const ast::DiscreteBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_double(const ast::Double &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_double_unit(const ast::DoubleUnit &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_eigen_linear_solver_block(const ast::EigenLinearSolverBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_eigen_newton_solver_block(const ast::EigenNewtonSolverBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_electrode_cur_var(const ast::ElectrodeCurVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_electrode_current(const ast::ElectrodeCurrent &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_else_if_statement(const ast::ElseIfStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_else_statement(const ast::ElseStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_expression(const ast::Expression &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_expression_statement(const ast::ExpressionStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_extern_var(const ast::ExternVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_external(const ast::External &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_factor_def(const ast::FactorDef &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_float(const ast::Float &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_for_netcon(const ast::ForNetcon &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_from_statement(const ast::FromStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_function_block(const ast::FunctionBlock &node) overridenmodl::visitor::FunctionCallpathVisitorvirtual
visit_function_call(const ast::FunctionCall &node) overridenmodl::visitor::FunctionCallpathVisitorvirtual
visit_function_table_block(const ast::FunctionTableBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_global(const ast::Global &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_global_var(const ast::GlobalVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_identifier(const ast::Identifier &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_if_statement(const ast::IfStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_include(const ast::Include &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_independent_block(const ast::IndependentBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_indexed_name(const ast::IndexedName &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_initial_block(const ast::InitialBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_integer(const ast::Integer &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_kinetic_block(const ast::KineticBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_lag_statement(const ast::LagStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_limits(const ast::Limits &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_lin_equation(const ast::LinEquation &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_line_comment(const ast::LineComment &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_linear_block(const ast::LinearBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_local_list_statement(const ast::LocalListStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_local_var(const ast::LocalVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_lon_difuse(const ast::LonDifuse &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_model(const ast::Model &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_mutex_lock(const ast::MutexLock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_mutex_unlock(const ast::MutexUnlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_name(const ast::Name &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_net_receive_block(const ast::NetReceiveBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_neuron_block(const ast::NeuronBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_node(const ast::Node &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_non_lin_equation(const ast::NonLinEquation &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_non_linear_block(const ast::NonLinearBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_nonspecific(const ast::Nonspecific &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_nonspecific_cur_var(const ast::NonspecificCurVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_nrn_state_block(const ast::NrnStateBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_number(const ast::Number &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_number_range(const ast::NumberRange &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_ontology_statement(const ast::OntologyStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_param_assign(const ast::ParamAssign &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_param_block(const ast::ParamBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_paren_expression(const ast::ParenExpression &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_pointer(const ast::Pointer &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_pointer_var(const ast::PointerVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_prime_name(const ast::PrimeName &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_procedure_block(const ast::ProcedureBlock &node) overridenmodl::visitor::FunctionCallpathVisitorvirtual
visit_program(const ast::Program &node) overridenmodl::visitor::FunctionCallpathVisitorvirtual
visit_protect_statement(const ast::ProtectStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_random_var(const ast::RandomVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_random_var_list(const ast::RandomVarList &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_range(const ast::Range &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_range_var(const ast::RangeVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_react_var_name(const ast::ReactVarName &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_reaction_operator(const ast::ReactionOperator &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_reaction_statement(const ast::ReactionStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_read_ion_var(const ast::ReadIonVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_solution_expression(const ast::SolutionExpression &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_solve_block(const ast::SolveBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_state_block(const ast::StateBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_statement(const ast::Statement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_statement_block(const ast::StatementBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_string(const ast::String &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_suffix(const ast::Suffix &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_table_statement(const ast::TableStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_thread_safe(const ast::ThreadSafe &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_unary_expression(const ast::UnaryExpression &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_unary_operator(const ast::UnaryOperator &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_unit(const ast::Unit &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_unit_block(const ast::UnitBlock &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_unit_def(const ast::UnitDef &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_unit_state(const ast::UnitState &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_update_dt(const ast::UpdateDt &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_useion(const ast::Useion &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_valence(const ast::Valence &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_var_name(const ast::VarName &node) overridenmodl::visitor::FunctionCallpathVisitorvirtual
visit_verbatim(const ast::Verbatim &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_watch(const ast::Watch &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_watch_statement(const ast::WatchStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_while_statement(const ast::WhileStatement &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_wrapped_expression(const ast::WrappedExpression &node) overridenmodl::visitor::ConstAstVisitorvirtual
visit_write_ion_var(const ast::WriteIonVar &node) overridenmodl::visitor::ConstAstVisitorvirtual
visited_functions_or_proceduresnmodl::visitor::FunctionCallpathVisitorprivate
~ConstVisitor()=defaultnmodl::visitor::ConstVisitorvirtual
+
+ + + + + + + + diff --git a/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor.html b/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor.html new file mode 100644 index 0000000000..10895a09f3 --- /dev/null +++ b/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor.html @@ -0,0 +1,756 @@ + + + + + + + +User Guide: nmodl::visitor::FunctionCallpathVisitor Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
User Guide +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
nmodl::visitor::FunctionCallpathVisitor Class Reference
+
+
+ +

Visitor for traversing FunctionBlock s and ProcedureBlocks through their FunctionCall s + More...

+

Detailed Description

+

Visitor for traversing FunctionBlock s and ProcedureBlocks through their FunctionCall s

+

This visitor is used to traverse the FUNCTION s and PROCEDURE s in the NMODL files. It visits the FunctionBlock s and ProcedureBlock s and if there is a FunctionCall in those, it visits the FunctionBlock or ProcedureBlock of the FunctionCall. Currently it only checks whether in this path of function calls there is any use of RANGE , POINTER or BBCOREPOINTER variable. In case there is it adds the use_range_ptr_var property in the Symbol of the function or procedure in the program SymbolTable and does the same recursively for all the caller functions. The use_range_ptr_var property is used later in the CodegenNeuronCppVisitor .

+ +

Definition at line 42 of file function_callpath_visitor.hpp.

+
+

#include <function_callpath_visitor.hpp>

+
+Inheritance diagram for nmodl::visitor::FunctionCallpathVisitor:
+
+
+ + +nmodl::visitor::ConstAstVisitor +nmodl::visitor::ConstVisitor + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void visit_var_name (const ast::VarName &node) override
 visit node of type ast::VarName More...
 
void visit_function_call (const ast::FunctionCall &node) override
 visit node of type ast::FunctionCall More...
 
void visit_function_block (const ast::FunctionBlock &node) override
 visit node of type ast::FunctionBlock More...
 
void visit_procedure_block (const ast::ProcedureBlock &node) override
 visit node of type ast::ProcedureBlock More...
 
void visit_program (const ast::Program &node) override
 visit node of type ast::Program More...
 
- Public Member Functions inherited from nmodl::visitor::ConstAstVisitor
void visit_node (const ast::Node &node) override
 visit node of type ast::Node More...
 
void visit_statement (const ast::Statement &node) override
 visit node of type ast::Statement More...
 
void visit_expression (const ast::Expression &node) override
 visit node of type ast::Expression More...
 
void visit_block (const ast::Block &node) override
 visit node of type ast::Block More...
 
void visit_identifier (const ast::Identifier &node) override
 visit node of type ast::Identifier More...
 
void visit_number (const ast::Number &node) override
 visit node of type ast::Number More...
 
void visit_string (const ast::String &node) override
 visit node of type ast::String More...
 
void visit_integer (const ast::Integer &node) override
 visit node of type ast::Integer More...
 
void visit_float (const ast::Float &node) override
 visit node of type ast::Float More...
 
void visit_double (const ast::Double &node) override
 visit node of type ast::Double More...
 
void visit_boolean (const ast::Boolean &node) override
 visit node of type ast::Boolean More...
 
void visit_name (const ast::Name &node) override
 visit node of type ast::Name More...
 
void visit_prime_name (const ast::PrimeName &node) override
 visit node of type ast::PrimeName More...
 
void visit_indexed_name (const ast::IndexedName &node) override
 visit node of type ast::IndexedName More...
 
void visit_var_name (const ast::VarName &node) override
 visit node of type ast::VarName More...
 
void visit_argument (const ast::Argument &node) override
 visit node of type ast::Argument More...
 
void visit_react_var_name (const ast::ReactVarName &node) override
 visit node of type ast::ReactVarName More...
 
void visit_read_ion_var (const ast::ReadIonVar &node) override
 visit node of type ast::ReadIonVar More...
 
void visit_write_ion_var (const ast::WriteIonVar &node) override
 visit node of type ast::WriteIonVar More...
 
void visit_nonspecific_cur_var (const ast::NonspecificCurVar &node) override
 visit node of type ast::NonspecificCurVar More...
 
void visit_electrode_cur_var (const ast::ElectrodeCurVar &node) override
 visit node of type ast::ElectrodeCurVar More...
 
void visit_range_var (const ast::RangeVar &node) override
 visit node of type ast::RangeVar More...
 
void visit_global_var (const ast::GlobalVar &node) override
 visit node of type ast::GlobalVar More...
 
void visit_pointer_var (const ast::PointerVar &node) override
 visit node of type ast::PointerVar More...
 
void visit_random_var (const ast::RandomVar &node) override
 visit node of type ast::RandomVar More...
 
void visit_bbcore_pointer_var (const ast::BbcorePointerVar &node) override
 visit node of type ast::BbcorePointerVar More...
 
void visit_extern_var (const ast::ExternVar &node) override
 visit node of type ast::ExternVar More...
 
void visit_param_block (const ast::ParamBlock &node) override
 visit node of type ast::ParamBlock More...
 
void visit_independent_block (const ast::IndependentBlock &node) override
 visit node of type ast::IndependentBlock More...
 
void visit_assigned_block (const ast::AssignedBlock &node) override
 visit node of type ast::AssignedBlock More...
 
void visit_state_block (const ast::StateBlock &node) override
 visit node of type ast::StateBlock More...
 
void visit_initial_block (const ast::InitialBlock &node) override
 visit node of type ast::InitialBlock More...
 
void visit_constructor_block (const ast::ConstructorBlock &node) override
 visit node of type ast::ConstructorBlock More...
 
void visit_destructor_block (const ast::DestructorBlock &node) override
 visit node of type ast::DestructorBlock More...
 
void visit_statement_block (const ast::StatementBlock &node) override
 visit node of type ast::StatementBlock More...
 
void visit_derivative_block (const ast::DerivativeBlock &node) override
 visit node of type ast::DerivativeBlock More...
 
void visit_linear_block (const ast::LinearBlock &node) override
 visit node of type ast::LinearBlock More...
 
void visit_non_linear_block (const ast::NonLinearBlock &node) override
 visit node of type ast::NonLinearBlock More...
 
void visit_discrete_block (const ast::DiscreteBlock &node) override
 visit node of type ast::DiscreteBlock More...
 
void visit_function_table_block (const ast::FunctionTableBlock &node) override
 visit node of type ast::FunctionTableBlock More...
 
void visit_function_block (const ast::FunctionBlock &node) override
 visit node of type ast::FunctionBlock More...
 
void visit_procedure_block (const ast::ProcedureBlock &node) override
 visit node of type ast::ProcedureBlock More...
 
void visit_net_receive_block (const ast::NetReceiveBlock &node) override
 visit node of type ast::NetReceiveBlock More...
 
void visit_solve_block (const ast::SolveBlock &node) override
 visit node of type ast::SolveBlock More...
 
void visit_breakpoint_block (const ast::BreakpointBlock &node) override
 visit node of type ast::BreakpointBlock More...
 
void visit_before_block (const ast::BeforeBlock &node) override
 visit node of type ast::BeforeBlock More...
 
void visit_after_block (const ast::AfterBlock &node) override
 visit node of type ast::AfterBlock More...
 
void visit_ba_block (const ast::BABlock &node) override
 visit node of type ast::BABlock More...
 
void visit_for_netcon (const ast::ForNetcon &node) override
 visit node of type ast::ForNetcon More...
 
void visit_kinetic_block (const ast::KineticBlock &node) override
 visit node of type ast::KineticBlock More...
 
void visit_unit_block (const ast::UnitBlock &node) override
 visit node of type ast::UnitBlock More...
 
void visit_constant_block (const ast::ConstantBlock &node) override
 visit node of type ast::ConstantBlock More...
 
void visit_neuron_block (const ast::NeuronBlock &node) override
 visit node of type ast::NeuronBlock More...
 
void visit_unit (const ast::Unit &node) override
 visit node of type ast::Unit More...
 
void visit_double_unit (const ast::DoubleUnit &node) override
 visit node of type ast::DoubleUnit More...
 
void visit_local_var (const ast::LocalVar &node) override
 visit node of type ast::LocalVar More...
 
void visit_limits (const ast::Limits &node) override
 visit node of type ast::Limits More...
 
void visit_number_range (const ast::NumberRange &node) override
 visit node of type ast::NumberRange More...
 
void visit_constant_var (const ast::ConstantVar &node) override
 visit node of type ast::ConstantVar More...
 
void visit_binary_operator (const ast::BinaryOperator &node) override
 visit node of type ast::BinaryOperator More...
 
void visit_unary_operator (const ast::UnaryOperator &node) override
 visit node of type ast::UnaryOperator More...
 
void visit_reaction_operator (const ast::ReactionOperator &node) override
 visit node of type ast::ReactionOperator More...
 
void visit_paren_expression (const ast::ParenExpression &node) override
 visit node of type ast::ParenExpression More...
 
void visit_binary_expression (const ast::BinaryExpression &node) override
 visit node of type ast::BinaryExpression More...
 
void visit_diff_eq_expression (const ast::DiffEqExpression &node) override
 visit node of type ast::DiffEqExpression More...
 
void visit_unary_expression (const ast::UnaryExpression &node) override
 visit node of type ast::UnaryExpression More...
 
void visit_non_lin_equation (const ast::NonLinEquation &node) override
 visit node of type ast::NonLinEquation More...
 
void visit_lin_equation (const ast::LinEquation &node) override
 visit node of type ast::LinEquation More...
 
void visit_function_call (const ast::FunctionCall &node) override
 visit node of type ast::FunctionCall More...
 
void visit_watch (const ast::Watch &node) override
 visit node of type ast::Watch More...
 
void visit_ba_block_type (const ast::BABlockType &node) override
 visit node of type ast::BABlockType More...
 
void visit_unit_def (const ast::UnitDef &node) override
 visit node of type ast::UnitDef More...
 
void visit_factor_def (const ast::FactorDef &node) override
 visit node of type ast::FactorDef More...
 
void visit_valence (const ast::Valence &node) override
 visit node of type ast::Valence More...
 
void visit_unit_state (const ast::UnitState &node) override
 visit node of type ast::UnitState More...
 
void visit_local_list_statement (const ast::LocalListStatement &node) override
 visit node of type ast::LocalListStatement More...
 
void visit_model (const ast::Model &node) override
 visit node of type ast::Model More...
 
void visit_define (const ast::Define &node) override
 visit node of type ast::Define More...
 
void visit_include (const ast::Include &node) override
 visit node of type ast::Include More...
 
void visit_param_assign (const ast::ParamAssign &node) override
 visit node of type ast::ParamAssign More...
 
void visit_assigned_definition (const ast::AssignedDefinition &node) override
 visit node of type ast::AssignedDefinition More...
 
void visit_conductance_hint (const ast::ConductanceHint &node) override
 visit node of type ast::ConductanceHint More...
 
void visit_expression_statement (const ast::ExpressionStatement &node) override
 visit node of type ast::ExpressionStatement More...
 
void visit_protect_statement (const ast::ProtectStatement &node) override
 visit node of type ast::ProtectStatement More...
 
void visit_from_statement (const ast::FromStatement &node) override
 visit node of type ast::FromStatement More...
 
void visit_while_statement (const ast::WhileStatement &node) override
 visit node of type ast::WhileStatement More...
 
void visit_if_statement (const ast::IfStatement &node) override
 visit node of type ast::IfStatement More...
 
void visit_else_if_statement (const ast::ElseIfStatement &node) override
 visit node of type ast::ElseIfStatement More...
 
void visit_else_statement (const ast::ElseStatement &node) override
 visit node of type ast::ElseStatement More...
 
void visit_watch_statement (const ast::WatchStatement &node) override
 visit node of type ast::WatchStatement More...
 
void visit_mutex_lock (const ast::MutexLock &node) override
 visit node of type ast::MutexLock More...
 
void visit_mutex_unlock (const ast::MutexUnlock &node) override
 visit node of type ast::MutexUnlock More...
 
void visit_conserve (const ast::Conserve &node) override
 visit node of type ast::Conserve More...
 
void visit_compartment (const ast::Compartment &node) override
 visit node of type ast::Compartment More...
 
void visit_lon_difuse (const ast::LonDifuse &node) override
 visit node of type ast::LonDifuse More...
 
void visit_reaction_statement (const ast::ReactionStatement &node) override
 visit node of type ast::ReactionStatement More...
 
void visit_lag_statement (const ast::LagStatement &node) override
 visit node of type ast::LagStatement More...
 
void visit_constant_statement (const ast::ConstantStatement &node) override
 visit node of type ast::ConstantStatement More...
 
void visit_table_statement (const ast::TableStatement &node) override
 visit node of type ast::TableStatement More...
 
void visit_suffix (const ast::Suffix &node) override
 visit node of type ast::Suffix More...
 
void visit_useion (const ast::Useion &node) override
 visit node of type ast::Useion More...
 
void visit_nonspecific (const ast::Nonspecific &node) override
 visit node of type ast::Nonspecific More...
 
void visit_electrode_current (const ast::ElectrodeCurrent &node) override
 visit node of type ast::ElectrodeCurrent More...
 
void visit_range (const ast::Range &node) override
 visit node of type ast::Range More...
 
void visit_global (const ast::Global &node) override
 visit node of type ast::Global More...
 
void visit_random_var_list (const ast::RandomVarList &node) override
 visit node of type ast::RandomVarList More...
 
void visit_pointer (const ast::Pointer &node) override
 visit node of type ast::Pointer More...
 
void visit_bbcore_pointer (const ast::BbcorePointer &node) override
 visit node of type ast::BbcorePointer More...
 
void visit_external (const ast::External &node) override
 visit node of type ast::External More...
 
void visit_thread_safe (const ast::ThreadSafe &node) override
 visit node of type ast::ThreadSafe More...
 
void visit_verbatim (const ast::Verbatim &node) override
 visit node of type ast::Verbatim More...
 
void visit_line_comment (const ast::LineComment &node) override
 visit node of type ast::LineComment More...
 
void visit_block_comment (const ast::BlockComment &node) override
 visit node of type ast::BlockComment More...
 
void visit_ontology_statement (const ast::OntologyStatement &node) override
 visit node of type ast::OntologyStatement More...
 
void visit_program (const ast::Program &node) override
 visit node of type ast::Program More...
 
void visit_nrn_state_block (const ast::NrnStateBlock &node) override
 visit node of type ast::NrnStateBlock More...
 
void visit_eigen_newton_solver_block (const ast::EigenNewtonSolverBlock &node) override
 visit node of type ast::EigenNewtonSolverBlock More...
 
void visit_eigen_linear_solver_block (const ast::EigenLinearSolverBlock &node) override
 visit node of type ast::EigenLinearSolverBlock More...
 
void visit_wrapped_expression (const ast::WrappedExpression &node) override
 visit node of type ast::WrappedExpression More...
 
void visit_derivimplicit_callback (const ast::DerivimplicitCallback &node) override
 visit node of type ast::DerivimplicitCallback More...
 
void visit_solution_expression (const ast::SolutionExpression &node) override
 visit node of type ast::SolutionExpression More...
 
void visit_update_dt (const ast::UpdateDt &node) override
 visit node of type ast::UpdateDt More...
 
- Public Member Functions inherited from nmodl::visitor::ConstVisitor
virtual ~ConstVisitor ()=default
 
+ + + + + + + +

+Private Attributes

std::vector< const ast::Block * > visited_functions_or_procedures
 Vector of currently visited functions or procedures (used as a searchable stack) More...
 
symtab::SymbolTablepsymtab = nullptr
 symbol table for the program More...
 
+

Member Function Documentation

+ +

◆ visit_function_block()

+ +
+
+ + + + + +
+ + + + + + + + +
void nmodl::visitor::FunctionCallpathVisitor::visit_function_block (const ast::FunctionBlocknode)
+
+overridevirtual
+
+ +

visit node of type ast::FunctionBlock

+ +

Implements nmodl::visitor::ConstVisitor.

+ +

Definition at line 77 of file function_callpath_visitor.cpp.

+ +
+
+ +

◆ visit_function_call()

+ +
+
+ + + + + +
+ + + + + + + + +
void nmodl::visitor::FunctionCallpathVisitor::visit_function_call (const ast::FunctionCallnode)
+
+overridevirtual
+
+ +

visit node of type ast::FunctionCall

+

Visit the called FUNCTION/PROCEDURE AST node to check whether it has use_range_ptr_var property. If it does the currently called function needs to have it too.

+ +

Implements nmodl::visitor::ConstVisitor.

+ +

Definition at line 38 of file function_callpath_visitor.cpp.

+ +
+
+ +

◆ visit_procedure_block()

+ +
+
+ + + + + +
+ + + + + + + + +
void nmodl::visitor::FunctionCallpathVisitor::visit_procedure_block (const ast::ProcedureBlocknode)
+
+overridevirtual
+
+ +

visit node of type ast::ProcedureBlock

+

Avoid recursive calls

+ +

Implements nmodl::visitor::ConstVisitor.

+ +

Definition at line 65 of file function_callpath_visitor.cpp.

+ +
+
+ +

◆ visit_program()

+ +
+
+ + + + + +
+ + + + + + + + +
void nmodl::visitor::FunctionCallpathVisitor::visit_program (const ast::Programnode)
+
+overridevirtual
+
+ +

visit node of type ast::Program

+ +

Implements nmodl::visitor::ConstVisitor.

+ +

Definition at line 89 of file function_callpath_visitor.cpp.

+ +
+
+ +

◆ visit_var_name()

+ +
+
+ + + + + +
+ + + + + + + + +
void nmodl::visitor::FunctionCallpathVisitor::visit_var_name (const ast::VarNamenode)
+
+overridevirtual
+
+ +

visit node of type ast::VarName

+

If node is either a RANGE var, a POINTER or a BBCOREPOINTER then the FUNCTION or PROCEDURE it's used in should have the use_range_ptr_var property

+ +

Implements nmodl::visitor::ConstVisitor.

+ +

Definition at line 17 of file function_callpath_visitor.cpp.

+ +
+
+

Member Data Documentation

+ +

◆ psymtab

+ +
+
+ + + + + +
+ + + + +
symtab::SymbolTable* nmodl::visitor::FunctionCallpathVisitor::psymtab = nullptr
+
+private
+
+ +

symbol table for the program

+ +

Definition at line 48 of file function_callpath_visitor.hpp.

+ +
+
+ +

◆ visited_functions_or_procedures

+ +
+
+ + + + + +
+ + + + +
std::vector<const ast::Block*> nmodl::visitor::FunctionCallpathVisitor::visited_functions_or_procedures
+
+private
+
+ +

Vector of currently visited functions or procedures (used as a searchable stack)

+ +

Definition at line 45 of file function_callpath_visitor.hpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + + + + + diff --git a/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor.js b/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor.js new file mode 100644 index 0000000000..7b116a6f97 --- /dev/null +++ b/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor.js @@ -0,0 +1,10 @@ +var classnmodl_1_1visitor_1_1_function_callpath_visitor = +[ + [ "visit_function_block", "classnmodl_1_1visitor_1_1_function_callpath_visitor.html#affef8fc9f61dc540968eae22a2407c71", null ], + [ "visit_function_call", "classnmodl_1_1visitor_1_1_function_callpath_visitor.html#a3d94cb27086ba92f53c7cd33f4f30524", null ], + [ "visit_procedure_block", "classnmodl_1_1visitor_1_1_function_callpath_visitor.html#a740260d32147029fb83df276457c2ac6", null ], + [ "visit_program", "classnmodl_1_1visitor_1_1_function_callpath_visitor.html#ae5af816b7069226ab9baa3c047963938", null ], + [ "visit_var_name", "classnmodl_1_1visitor_1_1_function_callpath_visitor.html#a9f535dfb296b252b357fe415923be3a6", null ], + [ "psymtab", "classnmodl_1_1visitor_1_1_function_callpath_visitor.html#aea781ec83741fbccf57ae3c97653373d", null ], + [ "visited_functions_or_procedures", "classnmodl_1_1visitor_1_1_function_callpath_visitor.html#a8efe0bb123db1c5d448f453dae38591b", null ] +]; \ No newline at end of file diff --git a/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor.png b/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor.png new file mode 100644 index 0000000000..138e1d2bff Binary files /dev/null and b/html/doxygen/classnmodl_1_1visitor_1_1_function_callpath_visitor.png differ diff --git a/html/doxygen/codegen__cpp__visitor_8cpp_source.html b/html/doxygen/codegen__cpp__visitor_8cpp_source.html index dfa8eebe40..7875d9c80f 100644 --- a/html/doxygen/codegen__cpp__visitor_8cpp_source.html +++ b/html/doxygen/codegen__cpp__visitor_8cpp_source.html @@ -1380,7 +1380,7 @@
nmodl::codegen::CodegenCppVisitor::visit_string
void visit_string(const ast::String &node) override
visit node of type ast::String
Definition: codegen_cpp_visitor.cpp:613
nmodl::codegen::IndexSemantics
Represent semantic information for index variable.
Definition: codegen_info.hpp:170
nmodl::codegen::BlockType::Watch
@ Watch
watch block
-
nmodl::symtab::syminfo::to_string
std::string to_string(const T &obj)
Definition: symbol_properties.hpp:276
+
nmodl::symtab::syminfo::to_string
std::string to_string(const T &obj)
Definition: symbol_properties.hpp:279
nmodl::ast::Ast::is_block_comment
virtual bool is_block_comment() const noexcept
Check if the ast node is an instance of ast::BlockComment.
Definition: ast.cpp:286
nmodl::codegen::utils::format_float_string
std::string format_float_string(const std::string &s_value)
Handles the float constants format being printed in the generated code.
nmodl::codegen::CodegenCppVisitor::visit_solution_expression
void visit_solution_expression(const ast::SolutionExpression &node) override
visit node of type ast::SolutionExpression
Definition: codegen_cpp_visitor.cpp:841
diff --git a/html/doxygen/codegen__helper__visitor_8cpp_source.html b/html/doxygen/codegen__helper__visitor_8cpp_source.html index 79cb8f5d21..237cba5598 100644 --- a/html/doxygen/codegen__helper__visitor_8cpp_source.html +++ b/html/doxygen/codegen__helper__visitor_8cpp_source.html @@ -953,7 +953,7 @@
nmodl::ast::EigenLinearSolverBlock::visit_children
void visit_children(visitor::Visitor &v) override
visit children i.e.
Definition: ast.cpp:13377
nmodl::codegen::Ion::is_intra_cell_conc
bool is_intra_cell_conc(const std::string &text) const
Check if variable name is internal cell concentration.
Definition: codegen_info.hpp:87
nmodl::codegen::CodegenHelperVisitor::visit_watch
void visit_watch(const ast::Watch &node) override
visit node of type ast::Watch
Definition: codegen_helper_visitor.cpp:695
-
nmodl::symtab::syminfo::to_string
std::string to_string(const T &obj)
Definition: symbol_properties.hpp:276
+
nmodl::symtab::syminfo::to_string
std::string to_string(const T &obj)
Definition: symbol_properties.hpp:279
nmodl::ast::Program::visit_children
void visit_children(visitor::Visitor &v) override
visit children i.e.
Definition: ast.cpp:12902
nmodl::codegen::Ion::is_extra_cell_conc
bool is_extra_cell_conc(const std::string &text) const
Check if variable name is external cell concentration.
Definition: codegen_info.hpp:96
nmodl::codegen::CodegenHelperVisitor::sort_with_mod2c_symbol_order
static void sort_with_mod2c_symbol_order(std::vector< SymbolType > &symbols)
How symbols are stored in NEURON? See notes written in markdown file.
Definition: codegen_helper_visitor.cpp:47
diff --git a/html/doxygen/dir_5da0f2f50dc0c79639fb8a44dc3280da.html b/html/doxygen/dir_5da0f2f50dc0c79639fb8a44dc3280da.html index f7312b799c..2d99952dda 100644 --- a/html/doxygen/dir_5da0f2f50dc0c79639fb8a44dc3280da.html +++ b/html/doxygen/dir_5da0f2f50dc0c79639fb8a44dc3280da.html @@ -118,6 +118,11 @@ file  defuse_analyze_visitor.hpp [code]  Visitor to return Def-Use chain for a given variable in the block/node
  +file  function_callpath_visitor.cpp [code] +  +file  function_callpath_visitor.hpp [code] + Visitor for traversing FunctionBlock s and ProcedureBlocks through their FunctionCall s
+  file  global_var_visitor.cpp [code]   file  global_var_visitor.hpp [code] diff --git a/html/doxygen/dir_5da0f2f50dc0c79639fb8a44dc3280da.js b/html/doxygen/dir_5da0f2f50dc0c79639fb8a44dc3280da.js index a3dc270079..e4635e6257 100644 --- a/html/doxygen/dir_5da0f2f50dc0c79639fb8a44dc3280da.js +++ b/html/doxygen/dir_5da0f2f50dc0c79639fb8a44dc3280da.js @@ -6,6 +6,8 @@ var dir_5da0f2f50dc0c79639fb8a44dc3280da = [ "constant_folder_visitor.hpp", "constant__folder__visitor_8hpp.html", null ], [ "defuse_analyze_visitor.cpp", "defuse__analyze__visitor_8cpp.html", "defuse__analyze__visitor_8cpp" ], [ "defuse_analyze_visitor.hpp", "defuse__analyze__visitor_8hpp.html", "defuse__analyze__visitor_8hpp" ], + [ "function_callpath_visitor.cpp", "function__callpath__visitor_8cpp.html", null ], + [ "function_callpath_visitor.hpp", "function__callpath__visitor_8hpp.html", null ], [ "global_var_visitor.cpp", "global__var__visitor_8cpp.html", null ], [ "global_var_visitor.hpp", "global__var__visitor_8hpp.html", null ], [ "implicit_argument_visitor.cpp", "implicit__argument__visitor_8cpp.html", null ], diff --git a/html/doxygen/files.html b/html/doxygen/files.html index 08052fdecf..3abeea4685 100644 --- a/html/doxygen/files.html +++ b/html/doxygen/files.html @@ -347,55 +347,57 @@  constant_folder_visitor.hppPerform constant folding of integer/float/double expressions.  defuse_analyze_visitor.cpp  defuse_analyze_visitor.hppVisitor to return Def-Use chain for a given variable in the block/node - global_var_visitor.cpp - global_var_visitor.hppVisitor to convert GLOBAL variables to RANGE variables. - implicit_argument_visitor.cpp - implicit_argument_visitor.hppVisitor for adding implicit arguments to [Core]NEURON functions. - indexedname_visitor.cpp - indexedname_visitor.hppGet node name with indexed for the IndexedName node and the dependencies of DiffEqExpression node. - inline_visitor.cpp - inline_visitor.hppVisitor to inline local procedure and function calls - kinetic_block_visitor.cpp - kinetic_block_visitor.hppVisitor for kinetic block statements - local_to_assigned_visitor.cpp - local_to_assigned_visitor.hppVisitor to convert top level LOCAL variables to ASSIGNED variables. - local_var_rename_visitor.cpp - local_var_rename_visitor.hppVisitor to rename local variables conflicting with global scope - localize_visitor.cpp - localize_visitor.hppVisitor to transform global variable usage to local - loop_unroll_visitor.cpp - loop_unroll_visitor.hppUnroll for loop in the AST. - main.cppStandalone program demonstrating usage of different visitors and driver classes - neuron_solve_visitor.cpp - neuron_solve_visitor.hppVisitor that solves ODEs using old solvers of NEURON - nmodl_visitor_helper.ipp - perf_visitor.cpp - perf_visitor.hppVisitor for measuring performance related information - rename_visitor.cpp - rename_visitor.hppBlindly rename given variable to new name - semantic_analysis_visitor.cpp - semantic_analysis_visitor.hpp - solve_block_visitor.cpp - solve_block_visitor.hppReplace solve block statements with actual solution node in the AST. - steadystate_visitor.cpp - steadystate_visitor.hppVisitor for STEADYSTATE solve statements - sympy_conductance_visitor.cpp - sympy_conductance_visitor.hppVisitor for generating CONDUCTANCE statements for ions - sympy_replace_solutions_visitor.cpp - sympy_replace_solutions_visitor.hppReplace statements in node with pre_solve_statements, tmp_statements, and solutions. - sympy_solver_visitor.cpp - sympy_solver_visitor.hppVisitor for systems of algebraic and differential equations - symtab_visitor_helper.hpp - units_visitor.cppAST Visitor to parse the ast::UnitDefs and ast::FactorDefs from the mod file by the Units Parser used to parse the nrnunits.lib file - units_visitor.hppVisitor for Units blocks of AST. - var_usage_visitor.cpp - var_usage_visitor.hppCheck if variable is used in given block. - verbatim_var_rename_visitor.cpp - verbatim_var_rename_visitor.hppRename variable in verbatim block. - verbatim_visitor.cpp - verbatim_visitor.hppVisitor for verbatim blocks of AST - visitor_utils.cpp - visitor_utils.hppUtility functions for visitors implementation + function_callpath_visitor.cpp + function_callpath_visitor.hppVisitor for traversing FunctionBlock s and ProcedureBlocks through their FunctionCall s + global_var_visitor.cpp + global_var_visitor.hppVisitor to convert GLOBAL variables to RANGE variables. + implicit_argument_visitor.cpp + implicit_argument_visitor.hppVisitor for adding implicit arguments to [Core]NEURON functions. + indexedname_visitor.cpp + indexedname_visitor.hppGet node name with indexed for the IndexedName node and the dependencies of DiffEqExpression node. + inline_visitor.cpp + inline_visitor.hppVisitor to inline local procedure and function calls + kinetic_block_visitor.cpp + kinetic_block_visitor.hppVisitor for kinetic block statements + local_to_assigned_visitor.cpp + local_to_assigned_visitor.hppVisitor to convert top level LOCAL variables to ASSIGNED variables. + local_var_rename_visitor.cpp + local_var_rename_visitor.hppVisitor to rename local variables conflicting with global scope + localize_visitor.cpp + localize_visitor.hppVisitor to transform global variable usage to local + loop_unroll_visitor.cpp + loop_unroll_visitor.hppUnroll for loop in the AST. + main.cppStandalone program demonstrating usage of different visitors and driver classes + neuron_solve_visitor.cpp + neuron_solve_visitor.hppVisitor that solves ODEs using old solvers of NEURON + nmodl_visitor_helper.ipp + perf_visitor.cpp + perf_visitor.hppVisitor for measuring performance related information + rename_visitor.cpp + rename_visitor.hppBlindly rename given variable to new name + semantic_analysis_visitor.cpp + semantic_analysis_visitor.hpp + solve_block_visitor.cpp + solve_block_visitor.hppReplace solve block statements with actual solution node in the AST. + steadystate_visitor.cpp + steadystate_visitor.hppVisitor for STEADYSTATE solve statements + sympy_conductance_visitor.cpp + sympy_conductance_visitor.hppVisitor for generating CONDUCTANCE statements for ions + sympy_replace_solutions_visitor.cpp + sympy_replace_solutions_visitor.hppReplace statements in node with pre_solve_statements, tmp_statements, and solutions. + sympy_solver_visitor.cpp + sympy_solver_visitor.hppVisitor for systems of algebraic and differential equations + symtab_visitor_helper.hpp + units_visitor.cppAST Visitor to parse the ast::UnitDefs and ast::FactorDefs from the mod file by the Units Parser used to parse the nrnunits.lib file + units_visitor.hppVisitor for Units blocks of AST. + var_usage_visitor.cpp + var_usage_visitor.hppCheck if variable is used in given block. + verbatim_var_rename_visitor.cpp + verbatim_var_rename_visitor.hppRename variable in verbatim block. + verbatim_visitor.cpp + verbatim_visitor.hppVisitor for verbatim blocks of AST + visitor_utils.cpp + visitor_utils.hppUtility functions for visitors implementation  main.cpp  nmodl.hpp   test diff --git a/html/doxygen/function__callpath__visitor_8cpp.html b/html/doxygen/function__callpath__visitor_8cpp.html new file mode 100644 index 0000000000..829941f55e --- /dev/null +++ b/html/doxygen/function__callpath__visitor_8cpp.html @@ -0,0 +1,128 @@ + + + + + + + +User Guide: /home/runner/work/nmodl/nmodl/src/visitors/function_callpath_visitor.cpp File Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
User Guide +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
function_callpath_visitor.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Namespaces

 nmodl
 encapsulates code generation backend implementations
 
 nmodl::visitor
 Implementation of different AST visitors.
 
+
+
+ + + + + + + + diff --git a/html/doxygen/function__callpath__visitor_8cpp_source.html b/html/doxygen/function__callpath__visitor_8cpp_source.html new file mode 100644 index 0000000000..a5a4a53d8c --- /dev/null +++ b/html/doxygen/function__callpath__visitor_8cpp_source.html @@ -0,0 +1,230 @@ + + + + + + + +User Guide: /home/runner/work/nmodl/nmodl/src/visitors/function_callpath_visitor.cpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
User Guide +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
function_callpath_visitor.cpp
+
+
+Go to the documentation of this file.
1 
+
2 /*
+
3  * Copyright 2024 Blue Brain Project, EPFL.
+
4  * See the top-level LICENSE file for details.
+
5  *
+
6  * SPDX-License-Identifier: Apache-2.0
+
7  */
+
8 
+ +
10 
+
11 namespace nmodl {
+
12 namespace visitor {
+
13 
+
14 using symtab::Symbol;
+ +
16 
+ +
18  if (visited_functions_or_procedures.empty()) {
+
19  return;
+
20  }
+
21  /// If node is either a RANGE var, a POINTER or a BBCOREPOINTER then
+
22  /// the FUNCTION or PROCEDURE it's used in should have the `use_range_ptr_var`
+
23  /// property
+
24  auto sym = psymtab->lookup(node.get_node_name());
+
25  const auto properties = NmodlType::range_var | NmodlType::pointer_var |
+
26  NmodlType::bbcore_pointer_var;
+
27  if (sym && sym->has_any_property(properties)) {
+
28  const auto top = visited_functions_or_procedures.back();
+
29  const auto caller_func_name =
+
30  top->is_function_block()
+
31  ? dynamic_cast<const ast::FunctionBlock*>(top)->get_node_name()
+
32  : dynamic_cast<const ast::ProcedureBlock*>(top)->get_node_name();
+
33  auto caller_func_proc_sym = psymtab->lookup(caller_func_name);
+
34  caller_func_proc_sym->add_properties(NmodlType::use_range_ptr_var);
+
35  }
+
36 }
+
37 
+ +
39  if (visited_functions_or_procedures.empty()) {
+
40  return;
+
41  }
+
42  const auto name = node.get_node_name();
+
43  const auto func_symbol = psymtab->lookup(name);
+
44  if (!func_symbol ||
+
45  !func_symbol->has_any_property(NmodlType::function_block | NmodlType::procedure_block) ||
+
46  func_symbol->get_nodes().empty()) {
+
47  return;
+
48  }
+
49  /// Visit the called FUNCTION/PROCEDURE AST node to check whether
+
50  /// it has `use_range_ptr_var` property. If it does the currently called
+
51  /// function needs to have it too.
+
52  const auto func_block = func_symbol->get_nodes()[0];
+
53  func_block->accept(*this);
+
54  if (func_symbol->has_any_property(NmodlType::use_range_ptr_var)) {
+
55  const auto top = visited_functions_or_procedures.back();
+
56  auto caller_func_name =
+
57  top->is_function_block()
+
58  ? dynamic_cast<const ast::FunctionBlock*>(top)->get_node_name()
+
59  : dynamic_cast<const ast::ProcedureBlock*>(top)->get_node_name();
+
60  auto caller_func_proc_sym = psymtab->lookup(caller_func_name);
+
61  caller_func_proc_sym->add_properties(NmodlType::use_range_ptr_var);
+
62  }
+
63 }
+
64 
+ +
66  /// Avoid recursive calls
+
67  if (std::find(visited_functions_or_procedures.begin(),
+ +
69  &node) != visited_functions_or_procedures.end()) {
+
70  return;
+
71  }
+
72  visited_functions_or_procedures.push_back(&node);
+
73  node.visit_children(*this);
+ +
75 }
+
76 
+ +
78  // Avoid recursive calls
+
79  if (std::find(visited_functions_or_procedures.begin(),
+ +
81  &node) != visited_functions_or_procedures.end()) {
+
82  return;
+
83  }
+
84  visited_functions_or_procedures.push_back(&node);
+
85  node.visit_children(*this);
+ +
87 }
+
88 
+ +
90  psymtab = node.get_symbol_table();
+
91  node.visit_children(*this);
+
92 }
+
93 
+
94 } // namespace visitor
+
95 } // namespace nmodl
+
+
+
nmodl::ast::FunctionCall::get_node_name
std::string get_node_name() const override
Return name of the node.
Definition: ast.cpp:7061
+
nmodl::ast::FunctionBlock
TODO.
Definition: function_block.hpp:39
+
nmodl::visitor::FunctionCallpathVisitor::visit_function_block
void visit_function_block(const ast::FunctionBlock &node) override
visit node of type ast::FunctionBlock
Definition: function_callpath_visitor.cpp:77
+
nmodl::visitor::FunctionCallpathVisitor::visit_program
void visit_program(const ast::Program &node) override
visit node of type ast::Program
Definition: function_callpath_visitor.cpp:89
+
nmodl
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
+
nmodl::ast::VarName
Represents a variable.
Definition: var_name.hpp:43
+
nmodl::visitor::FunctionCallpathVisitor::visited_functions_or_procedures
std::vector< const ast::Block * > visited_functions_or_procedures
Vector of currently visited functions or procedures (used as a searchable stack)
Definition: function_callpath_visitor.hpp:45
+
nmodl::ast::FunctionBlock::visit_children
void visit_children(visitor::Visitor &v) override
visit children i.e.
Definition: ast.cpp:3976
+
nmodl::ast::ProcedureBlock::visit_children
void visit_children(visitor::Visitor &v) override
visit children i.e.
Definition: ast.cpp:4173
+
nmodl::ast::FunctionCall
TODO.
Definition: function_call.hpp:38
+
nmodl::ast::Program::visit_children
void visit_children(visitor::Visitor &v) override
visit children i.e.
Definition: ast.cpp:12902
+
nmodl::visitor::FunctionCallpathVisitor::psymtab
symtab::SymbolTable * psymtab
symbol table for the program
Definition: function_callpath_visitor.hpp:48
+
nmodl::symtab::syminfo::NmodlType
NmodlType
NMODL variable properties.
Definition: symbol_properties.hpp:116
+
function_callpath_visitor.hpp
Visitor for traversing FunctionBlock s and ProcedureBlocks through their FunctionCall s
+
nmodl::ast::ProcedureBlock
TODO.
Definition: procedure_block.hpp:39
+
nmodl::visitor::FunctionCallpathVisitor::visit_var_name
void visit_var_name(const ast::VarName &node) override
visit node of type ast::VarName
Definition: function_callpath_visitor.cpp:17
+
nmodl::ast::Program::get_symbol_table
symtab::SymbolTable * get_symbol_table() const override
Return associated symbol table for the current ast node.
Definition: program.hpp:153
+
nmodl::visitor::FunctionCallpathVisitor::visit_function_call
void visit_function_call(const ast::FunctionCall &node) override
visit node of type ast::FunctionCall
Definition: function_callpath_visitor.cpp:38
+
nmodl::ast::Program
Represents top level AST node for whole NMODL input.
Definition: program.hpp:39
+
nmodl::symtab::SymbolTable::lookup
std::shared_ptr< Symbol > lookup(const std::string &name) const
check if symbol with given name exist in the current table (but not in parents)
Definition: symbol_table.hpp:199
+
nmodl::visitor::FunctionCallpathVisitor::visit_procedure_block
void visit_procedure_block(const ast::ProcedureBlock &node) override
visit node of type ast::ProcedureBlock
Definition: function_callpath_visitor.cpp:65
+
nmodl::ast::VarName::get_node_name
std::string get_node_name() const override
Return name of the node.
Definition: ast.cpp:1120
+ + + + + + + + diff --git a/html/doxygen/function__callpath__visitor_8hpp.html b/html/doxygen/function__callpath__visitor_8hpp.html new file mode 100644 index 0000000000..f060ecd256 --- /dev/null +++ b/html/doxygen/function__callpath__visitor_8hpp.html @@ -0,0 +1,144 @@ + + + + + + + +User Guide: /home/runner/work/nmodl/nmodl/src/visitors/function_callpath_visitor.hpp File Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
User Guide +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
function_callpath_visitor.hpp File Reference
+
+
+ +

Visitor for traversing FunctionBlock s and ProcedureBlocks through their FunctionCall s +More...

+

Detailed Description

+

Visitor for traversing FunctionBlock s and ProcedureBlocks through their FunctionCall s

+ +

Definition in file function_callpath_visitor.hpp.

+
#include "ast/all.hpp"
+#include "symtab/decl.hpp"
+#include "visitors/ast_visitor.hpp"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  nmodl::visitor::FunctionCallpathVisitor
 Visitor for traversing FunctionBlock s and ProcedureBlocks through their FunctionCall s More...
 
+ + + + + + + +

+Namespaces

 nmodl
 encapsulates code generation backend implementations
 
 nmodl::visitor
 Implementation of different AST visitors.
 
+
+
+ + + + + + + + diff --git a/html/doxygen/function__callpath__visitor_8hpp_source.html b/html/doxygen/function__callpath__visitor_8hpp_source.html new file mode 100644 index 0000000000..2d5197ab79 --- /dev/null +++ b/html/doxygen/function__callpath__visitor_8hpp_source.html @@ -0,0 +1,197 @@ + + + + + + + +User Guide: /home/runner/work/nmodl/nmodl/src/visitors/function_callpath_visitor.hpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
User Guide +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
function_callpath_visitor.hpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright 2024 Blue Brain Project, EPFL.
+
3  * See the top-level LICENSE file for details.
+
4  *
+
5  * SPDX-License-Identifier: Apache-2.0
+
6  */
+
7 
+
8 #pragma once
+
9 
+
10 /**
+
11  * \file
+
12  * \brief \copybrief nmodl::visitor::FunctionCallpathVisitor
+
13  */
+
14 
+
15 #include "ast/all.hpp"
+
16 #include "symtab/decl.hpp"
+
17 #include "visitors/ast_visitor.hpp"
+
18 
+
19 namespace nmodl {
+
20 namespace visitor {
+
21 
+
22 /**
+
23  * \addtogroup visitor_classes
+
24  * \{
+
25  */
+
26 
+
27 /**
+
28  * \class FunctionCallpathVisitor
+
29  * \brief %Visitor for traversing \c FunctionBlock s and \c ProcedureBlocks through
+
30  * their \c FunctionCall s
+
31  *
+
32  * This visitor is used to traverse the \c FUNCTION s and \c PROCEDURE s in the NMODL files.
+
33  * It visits the \c FunctionBlock s and \c ProcedureBlock s and if there is a \c FunctionCall
+
34  * in those, it visits the \c FunctionBlock or \c ProcedureBlock of the \c FunctionCall.
+
35  * Currently it only checks whether in this path of function calls there is any use of \c RANGE ,
+
36  * \c POINTER or \c BBCOREPOINTER variable. In case there is it adds the \c use_range_ptr_var
+
37  * property in the \c Symbol of the function or procedure in the program \c SymbolTable and does the
+
38  * same recursively for all the caller functions. The \c use_range_ptr_var property is used later in
+
39  * the \c CodegenNeuronCppVisitor .
+
40  *
+
41  */
+ +
43  private:
+
44  /// Vector of currently visited functions or procedures (used as a searchable stack)
+
45  std::vector<const ast::Block*> visited_functions_or_procedures;
+
46 
+
47  /// symbol table for the program
+ +
49 
+
50  public:
+
51  void visit_var_name(const ast::VarName& node) override;
+
52 
+
53  void visit_function_call(const ast::FunctionCall& node) override;
+
54 
+
55  void visit_function_block(const ast::FunctionBlock& node) override;
+
56 
+
57  void visit_procedure_block(const ast::ProcedureBlock& node) override;
+
58 
+
59  void visit_program(const ast::Program& node) override;
+
60 };
+
61 
+
62 /** \} */ // end of visitor_classes
+
63 
+
64 } // namespace visitor
+
65 } // namespace nmodl
+
+
+
nmodl::visitor::ConstAstVisitor
Concrete constant visitor for all AST classes.
Definition: ast_visitor.hpp:166
+
nmodl::ast::FunctionBlock
TODO.
Definition: function_block.hpp:39
+
nmodl::visitor::FunctionCallpathVisitor::visit_function_block
void visit_function_block(const ast::FunctionBlock &node) override
visit node of type ast::FunctionBlock
Definition: function_callpath_visitor.cpp:77
+
nmodl::visitor::FunctionCallpathVisitor::visit_program
void visit_program(const ast::Program &node) override
visit node of type ast::Program
Definition: function_callpath_visitor.cpp:89
+
nmodl
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
+
nmodl::ast::VarName
Represents a variable.
Definition: var_name.hpp:43
+
nmodl::visitor::FunctionCallpathVisitor::visited_functions_or_procedures
std::vector< const ast::Block * > visited_functions_or_procedures
Vector of currently visited functions or procedures (used as a searchable stack)
Definition: function_callpath_visitor.hpp:45
+
nmodl::ast::FunctionCall
TODO.
Definition: function_call.hpp:38
+
nmodl::visitor::FunctionCallpathVisitor
Visitor for traversing FunctionBlock s and ProcedureBlocks through their FunctionCall s
Definition: function_callpath_visitor.hpp:42
+
nmodl::symtab::SymbolTable
Represent symbol table for a NMODL block.
Definition: symbol_table.hpp:57
+
nmodl::visitor::FunctionCallpathVisitor::psymtab
symtab::SymbolTable * psymtab
symbol table for the program
Definition: function_callpath_visitor.hpp:48
+
nmodl::ast::ProcedureBlock
TODO.
Definition: procedure_block.hpp:39
+
nmodl::visitor::FunctionCallpathVisitor::visit_var_name
void visit_var_name(const ast::VarName &node) override
visit node of type ast::VarName
Definition: function_callpath_visitor.cpp:17
+
nmodl::visitor::FunctionCallpathVisitor::visit_function_call
void visit_function_call(const ast::FunctionCall &node) override
visit node of type ast::FunctionCall
Definition: function_callpath_visitor.cpp:38
+
nmodl::ast::Program
Represents top level AST node for whole NMODL input.
Definition: program.hpp:39
+
decl.hpp
Forward declarations of symbols in namespace nmodl::symtab.
+
nmodl::visitor::FunctionCallpathVisitor::visit_procedure_block
void visit_procedure_block(const ast::ProcedureBlock &node) override
visit node of type ast::ProcedureBlock
Definition: function_callpath_visitor.cpp:65
+
all.hpp
Auto generated AST classes declaration.
+
ast_visitor.hpp
Concrete visitor for all AST classes.
+ + + + + + + + diff --git a/html/doxygen/functions_func_v.html b/html/doxygen/functions_func_v.html index 7bd4fe0b66..996c0ad7c5 100644 --- a/html/doxygen/functions_func_v.html +++ b/html/doxygen/functions_func_v.html @@ -789,6 +789,7 @@

- v -