User Guide
main.cpp File Reference
#include <string>
#include <vector>
#include <CLI/CLI.hpp>
#include <filesystem>
#include "ast/program.hpp"
#include "codegen/codegen_acc_visitor.hpp"
#include "codegen/codegen_compatibility_visitor.hpp"
#include "codegen/codegen_coreneuron_cpp_visitor.hpp"
#include "codegen/codegen_neuron_cpp_visitor.hpp"
#include "codegen/codegen_transform_visitor.hpp"
#include "config/config.h"
#include "parser/nmodl_driver.hpp"
#include "pybind/pyembed.hpp"
#include "utils/common_utils.hpp"
#include "utils/logger.hpp"
#include "visitors/after_cvode_to_cnexp_visitor.hpp"
#include "visitors/ast_visitor.hpp"
#include "visitors/constant_folder_visitor.hpp"
#include "visitors/cvode_visitor.hpp"
#include "visitors/function_callpath_visitor.hpp"
#include "visitors/global_var_visitor.hpp"
#include "visitors/implicit_argument_visitor.hpp"
#include "visitors/indexedname_visitor.hpp"
#include "visitors/inline_visitor.hpp"
#include "visitors/json_visitor.hpp"
#include "visitors/kinetic_block_visitor.hpp"
#include "visitors/local_to_assigned_visitor.hpp"
#include "visitors/local_var_rename_visitor.hpp"
#include "visitors/localize_visitor.hpp"
#include "visitors/longitudinal_diffusion_visitor.hpp"
#include "visitors/loop_unroll_visitor.hpp"
#include "visitors/neuron_solve_visitor.hpp"
#include "visitors/nmodl_visitor.hpp"
#include "visitors/perf_visitor.hpp"
#include "visitors/rename_function_arguments.hpp"
#include "visitors/semantic_analysis_visitor.hpp"
#include "visitors/solve_block_visitor.hpp"
#include "visitors/steadystate_visitor.hpp"
#include "visitors/sympy_conductance_visitor.hpp"
#include "visitors/sympy_solver_visitor.hpp"
#include "visitors/symtab_visitor.hpp"
#include "visitors/units_visitor.hpp"
#include "visitors/verbatim_var_rename_visitor.hpp"
#include "visitors/verbatim_visitor.hpp"
#include "visitors/visitor_utils.hpp"

Go to the source code of this file.

Functions

int run_nmodl (int argc, const char *argv[])
 
int main (int argc, const char *argv[])
 

Function Documentation

◆ main()

int main ( int  argc,
const char *  argv[] 
)

Definition at line 656 of file main.cpp.

◆ run_nmodl()

int run_nmodl ( int  argc,
const char *  argv[] 
)

list of mod files to process

true if debug logger statements should be shown

true if code is to be generated for NEURON

true if code is to be generated for CoreNEURON

true if serial C++ code to be generated

true if c code with openacc to be generated

true if sympy should be used for solving ODEs analytically

true if Pade approximation to be used

true if CSE (temp variables) to be used

true if conductance keyword can be added to breakpoint

true if inlining at nmodl level to be done

true if unroll at nmodl level to be done

true if perform constant folding at nmodl level to be done

true if range variables to be converted to local

true if global variables to be converted to range

true if top level local variables to be converted to range

true if CVODE should be emitted

true if localize variables even if verbatim block is used

true if local variables to be renamed

true if inline even if verbatim block exist

true if verbatim blocks

true if code generation is forced to happen even if there is any incompatibility

true if we want to only check compatibility without generating code

true if ion variable copies should be avoided

directory where code will be generated

directory where intermediate file will be generated

directory where units lib file is located

true if ast should be converted to json

true if ast should be converted to nmodl

true if performance stats should be converted to json

true if symbol table should be printed

floating point data type

which line to run blame for

write ast to nmodl

create file path for nmodl file

driver object creates lexer and parser, just call parser method

parse mod file and construct ast

whether to update existing symbol table or create new one whenever we run symtab visitor.

construct symbol table

Check some rules that ast should follow

use cnexp instead of after_cvode solve method

GLOBAL to RANGE rename visitor

LOCAL to ASSIGNED visitor

note that we can not symtab visitor in update mode as we replace kinetic block with derivative block of same name in global scope

Parsing units fron "nrnunits.lib" and mod files

once we start modifying (especially removing) older constructs from ast then we should run symtab visitor in update mode so that old symbols (e.g. prime variables) are not lost

Definition at line 68 of file main.cpp.