User Guide
symbol_properties.hpp File Reference

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

Detailed Description

Implement various classes to represent various Symbol properties.

Definition in file symbol_properties.hpp.

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