NEURON
codegen_cpp_visitor.hpp File Reference

Visitor for printing C++ code compatible with legacy api of CoreNEURON More...

#include <algorithm>
#include <cmath>
#include <ctime>
#include <numeric>
#include <ostream>
#include <string>
#include <string_view>
#include <utility>
#include "codegen/codegen_info.hpp"
#include "codegen/codegen_naming.hpp"
#include "printer/code_printer.hpp"
#include "symtab/symbol_table.hpp"
#include "utils/logger.hpp"
#include "visitors/ast_visitor.hpp"

Go to the source code of this file.

Classes

class  nmodl::codegen::IndexVariableInfo
 Helper to represent information about index/int variables. More...
 
class  nmodl::codegen::ShadowUseStatement
 Represents ion write statement during code generation. More...
 
class  nmodl::codegen::CodegenCppVisitor
 Visitor for printing C++ code compatible with legacy api of CoreNEURON More...
 

Namespaces

 nmodl
 encapsulates code generation backend implementations
 
 nmodl::codegen
 

Enumerations

enum class  nmodl::codegen::BlockType {
  nmodl::codegen::Initial , nmodl::codegen::Constructor , nmodl::codegen::Destructor , nmodl::codegen::Equation ,
  nmodl::codegen::State , nmodl::codegen::Watch , nmodl::codegen::NetReceive , nmodl::codegen::BeforeAfter ,
  nmodl::codegen::BlockTypeEnd
}
 Helper to represent various block types. More...
 
enum class  nmodl::codegen::MemberType { nmodl::codegen::index , nmodl::codegen::range , nmodl::codegen::global , nmodl::codegen::thread }
 Helper to represent various variables types. More...
 
enum class  nmodl::codegen::CppObjectSpecifier {
  nmodl::codegen::Inline , nmodl::codegen::Static , nmodl::codegen::Virtual , nmodl::codegen::Explicit ,
  nmodl::codegen::Friend , nmodl::codegen::Constexpr , nmodl::codegen::Extern , nmodl::codegen::ExternC ,
  nmodl::codegen::ThreadLocal , nmodl::codegen::Const , nmodl::codegen::Volatile
}
 various specifiers (mostly for function codegen) More...
 

Functions

std::string nmodl::codegen::get_name (ast::Ast const *sym)
 
std::string nmodl::codegen::get_name (const std::shared_ptr< symtab::Symbol > &sym)
 
std::string nmodl::codegen::get_name (const IndexVariableInfo &var)
 
template<class T >
int nmodl::codegen::get_index_from_name (const std::vector< T > &variables, const std::string &name)
 
int nmodl::codegen::get_length (const std::shared_ptr< symtab::Symbol > &sym)
 
int nmodl::codegen::get_length (const IndexVariableInfo &var)
 
template<class T >
int nmodl::codegen::get_prefixsum_from_name (const std::vector< T > &variables, const std::string &name)
 

Detailed Description

Visitor for printing C++ code compatible with legacy api of CoreNEURON

Definition in file codegen_cpp_visitor.hpp.