NEURON
symbol_properties.hpp File Reference

Implement various classes to represent various Symbol properties. More...

#include <sstream>
#include "utils/string_utils.hpp"

Go to the source code of this file.

Namespaces

 nmodl
 encapsulates code generation backend implementations
 
 nmodl::symtab
 Symbol table related implementations
 
 nmodl::symtab::syminfo
 Symbol information
 

Typedefs

using nmodl::symtab::syminfo::enum_type = long long
 

Enumerations

enum class  nmodl::symtab::syminfo::DeclarationType : enum_type { nmodl::symtab::syminfo::variable , nmodl::symtab::syminfo::function }
 kind of symbol More...
 
enum class  nmodl::symtab::syminfo::Scope : enum_type { nmodl::symtab::syminfo::local , nmodl::symtab::syminfo::global , nmodl::symtab::syminfo::neuron , nmodl::symtab::syminfo::external }
 scope within a mod file More...
 
enum class  nmodl::symtab::syminfo::Status : enum_type {
  nmodl::symtab::syminfo::empty = 0 , nmodl::symtab::syminfo::localized = 1LL << 0 , nmodl::symtab::syminfo::globalized = 1LL << 1 , nmodl::symtab::syminfo::inlined = 1LL << 2 ,
  nmodl::symtab::syminfo::renamed = 1LL << 3 , nmodl::symtab::syminfo::created = 1LL << 4 , nmodl::symtab::syminfo::from_state = 1LL << 5 , nmodl::symtab::syminfo::thread_safe = 1LL << 6
}
 state during various compiler passes More...
 
enum class  nmodl::symtab::syminfo::VariableType : enum_type { nmodl::symtab::syminfo::scalar , nmodl::symtab::syminfo::array }
 usage of mod file as array or scalar More...
 
enum class  nmodl::symtab::syminfo::Access : enum_type { nmodl::symtab::syminfo::read = 1LL << 0 , nmodl::symtab::syminfo::write = 1LL << 1 }
 variable usage within a mod file More...
 
enum class  nmodl::symtab::syminfo::NmodlType : enum_type {
  nmodl::symtab::syminfo::empty = 0 , nmodl::symtab::syminfo::local_var = 1LL << 0 , nmodl::symtab::syminfo::global_var = 1LL << 1 , nmodl::symtab::syminfo::range_var = 1LL << 2 ,
  nmodl::symtab::syminfo::param_assign = 1LL << 3 , nmodl::symtab::syminfo::pointer_var = 1LL << 4 , nmodl::symtab::syminfo::bbcore_pointer_var = 1LL << 5 , nmodl::symtab::syminfo::extern_var = 1LL << 6 ,
  nmodl::symtab::syminfo::prime_name = 1LL << 7 , nmodl::symtab::syminfo::assigned_definition = 1LL << 8 , nmodl::symtab::syminfo::unit_def = 1LL << 9 , nmodl::symtab::syminfo::read_ion_var = 1LL << 10 ,
  nmodl::symtab::syminfo::write_ion_var = 1LL << 11 , nmodl::symtab::syminfo::nonspecific_cur_var = 1LL << 12 , nmodl::symtab::syminfo::electrode_cur_var = 1LL << 13 , nmodl::symtab::syminfo::argument = 1LL << 14 ,
  nmodl::symtab::syminfo::function_block = 1LL << 15 , nmodl::symtab::syminfo::procedure_block = 1LL << 16 , nmodl::symtab::syminfo::derivative_block = 1LL << 17 , nmodl::symtab::syminfo::linear_block = 1LL << 18 ,
  nmodl::symtab::syminfo::non_linear_block = 1LL << 19 , nmodl::symtab::syminfo::constant_var = 1LL << 20 , nmodl::symtab::syminfo::kinetic_block = 1LL << 21 , nmodl::symtab::syminfo::function_table_block = 1LL << 22 ,
  nmodl::symtab::syminfo::factor_def = 1LL << 23 , nmodl::symtab::syminfo::extern_neuron_variable = 1LL << 24 , nmodl::symtab::syminfo::extern_method = 1LL << 25 , nmodl::symtab::syminfo::state_var = 1LL << 26 ,
  nmodl::symtab::syminfo::to_solve = 1LL << 27 , nmodl::symtab::syminfo::useion = 1LL << 28 , nmodl::symtab::syminfo::table_statement_var = 1LL << 29 , nmodl::symtab::syminfo::table_assigned_var = 1LL << 30 ,
  nmodl::symtab::syminfo::discrete_block = 1LL << 31 , nmodl::symtab::syminfo::define = 1LL << 32 , nmodl::symtab::syminfo::codegen_var = 1LL << 33 , nmodl::symtab::syminfo::random_var = 1LL << 34 ,
  nmodl::symtab::syminfo::use_range_ptr_var = 1LL << 35 , nmodl::symtab::syminfo::longitudinal_diffusion_block = 1LL << 36
}
 NMODL variable properties. More...
 

Functions

template<typename T >
nmodl::symtab::syminfo::operator~ (T arg)
 
template<typename T >
nmodl::symtab::syminfo::operator| (T lhs, T rhs)
 
template<typename T >
nmodl::symtab::syminfo::operator& (T lhs, T rhs)
 
template<typename T >
T & nmodl::symtab::syminfo::operator|= (T &lhs, T rhs)
 
template<typename T >
T & nmodl::symtab::syminfo::operator&= (T &lhs, T rhs)
 
bool nmodl::symtab::syminfo::has_property (const NmodlType &obj, NmodlType property)
 check if any property is set More...
 
bool nmodl::symtab::syminfo::has_status (const Status &obj, Status state)
 check if any status is set More...
 
std::ostream & nmodl::symtab::syminfo::operator<< (std::ostream &os, const NmodlType &obj)
 
std::ostream & nmodl::symtab::syminfo::operator<< (std::ostream &os, const Status &obj)
 
std::vector< std::string > nmodl::symtab::syminfo::to_string_vector (const syminfo::NmodlType &obj)
 helper function to convert nmodl properties to string More...
 
std::vector< std::string > nmodl::symtab::syminfo::to_string_vector (const syminfo::Status &obj)
 helper function to convert symbol status to string More...
 
template<typename T >
std::string nmodl::symtab::syminfo::to_string (const T &obj)
 

Detailed Description

Implement various classes to represent various Symbol properties.

Definition in file symbol_properties.hpp.