NEURON
neuron::container::Node::handle_interface< Identifier > Struct Template Reference

Base class defining the public API of Node handles. More...

#include <node.hpp>

Inheritance diagram for neuron::container::Node::handle_interface< Identifier >:
neuron::container::handle_base< Identifier >

Public Types

using base_type = handle_base< Identifier >
 

Public Member Functions

field::AboveDiagonal::typea ()
 Return the above-diagonal element. More...
 
field::AboveDiagonal::type const & a () const
 Return the above-diagonal element. More...
 
field::Area::typearea ()
 Return the area. More...
 
field::Area::type const & area () const
 Return the area. More...
 
field::Area::typearea_hack ()
 This is a workaround for area sometimes being a macro. More...
 
field::Area::type const & area_hack () const
 This is a workaround for area sometimes being a macro. More...
 
data_handle< field::Area::typearea_handle ()
 Return a data_handle to the area. More...
 
field::BelowDiagonal::typeb ()
 Return the below-diagonal element. More...
 
field::BelowDiagonal::type const & b () const
 Return the below-diagonal element. More...
 
field::Diagonal::typed ()
 Return the diagonal element. More...
 
field::Diagonal::type const & d () const
 Return the diagonal element. More...
 
field::Voltage::typev ()
 Return the membrane potential. More...
 
field::Voltage::type const & v () const
 Return the membrane potential. More...
 
data_handle< field::Voltage::typev_handle ()
 Return a handle to the membrane potential. More...
 
field::Voltage::typev_hack ()
 This is a workaround for v sometimes being a macro. More...
 
field::Voltage::type const & v_hack () const
 This is a workaround for v sometimes being a macro. More...
 
field::RHS::typerhs ()
 Return the right hand side of the Hines solver. More...
 
field::RHS::type const & rhs () const
 Return the right hand side of the Hines solver. More...
 
data_handle< field::RHS::typerhs_handle ()
 Return a handle to the right hand side of the Hines solver. More...
 
field::FastIMemSavRHS::typesav_d ()
 
field::FastIMemSavRHS::type const & sav_d () const
 
field::FastIMemSavRHS::typesav_rhs ()
 
field::FastIMemSavRHS::type const & sav_rhs () const
 
data_handle< field::FastIMemSavRHS::typesav_rhs_handle ()
 
- Public Member Functions inherited from neuron::container::handle_base< Identifier >
 handle_base (Identifier identifier)
 Construct a handle from an identifier. More...
 
std::size_t current_row () const
 Return current offset in the underlying storage where this object lives. More...
 
non_owning_identifier_without_container id () const
 Obtain a lightweight identifier of the current entry. More...
 
auto id_hack () const
 This is a workaround for id sometimes being a macro. More...
 
auto & underlying_storage ()
 Obtain a reference to the storage this handle refers to. More...
 
auto const & underlying_storage () const
 Obtain a const reference to the storage this handle refers to. More...
 

Friends

std::ostream & operator<< (std::ostream &os, handle_interface const &handle)
 

Additional Inherited Members

- Protected Member Functions inherited from neuron::container::handle_base< Identifier >
template<typename Tag >
auto get_handle ()
 Get a data_handle<T> referring to the given field inside this handle. More...
 
template<typename Tag >
auto get_handle (int field_index, int array_offset=0)
 Get a data_handle<T> referring to the (runtime) field_index-th copy of a given (static) field. More...
 
template<typename Tag >
auto & get ()
 
template<typename Tag >
auto const & get () const
 
template<typename Tag >
constexpr Tag const & get_tag () const
 Get the instance of the given tag type from underlying storage. More...
 
template<typename Tag >
auto & get (int field_index, int array_offset=0)
 
template<typename Tag >
auto const & get (int field_index, int array_offset=0) const
 

Detailed Description

template<typename Identifier>
struct neuron::container::Node::handle_interface< Identifier >

Base class defining the public API of Node handles.

Template Parameters
IdentifierThe concrete owning/non-owning identifier type.

This allows the same struct-like accessors (v(), ...) to be used on all of the different types of objects that represent a single Node:

  • owning_handle: stable over permutations of underlying data, manages lifetime of a row in the underlying storage. Only null when in moved-from state.
  • handle: stable over permutations of underlying data, produces runtime error if it is dereferenced after the corresponding owning_handle has gone out of scope. Can be null.

Definition at line 90 of file node.hpp.

Member Typedef Documentation

◆ base_type

template<typename Identifier >
using neuron::container::Node::handle_interface< Identifier >::base_type = handle_base<Identifier>

Definition at line 91 of file node.hpp.

Member Function Documentation

◆ a() [1/2]

template<typename Identifier >
field::AboveDiagonal::type& neuron::container::Node::handle_interface< Identifier >::a ( )
inline

Return the above-diagonal element.

Definition at line 96 of file node.hpp.

◆ a() [2/2]

template<typename Identifier >
field::AboveDiagonal::type const& neuron::container::Node::handle_interface< Identifier >::a ( ) const
inline

Return the above-diagonal element.

Definition at line 103 of file node.hpp.

◆ area() [1/2]

template<typename Identifier >
field::Area::type& neuron::container::Node::handle_interface< Identifier >::area ( )
inline

Return the area.

Definition at line 109 of file node.hpp.

◆ area() [2/2]

template<typename Identifier >
field::Area::type const& neuron::container::Node::handle_interface< Identifier >::area ( ) const
inline

Return the area.

Definition at line 115 of file node.hpp.

◆ area_hack() [1/2]

template<typename Identifier >
field::Area::type& neuron::container::Node::handle_interface< Identifier >::area_hack ( )
inline

This is a workaround for area sometimes being a macro.

Todo:
Remove those macros once and for all.

Definition at line 123 of file node.hpp.

◆ area_hack() [2/2]

template<typename Identifier >
field::Area::type const& neuron::container::Node::handle_interface< Identifier >::area_hack ( ) const
inline

This is a workaround for area sometimes being a macro.

Todo:
Remove those macros once and for all.

Definition at line 131 of file node.hpp.

◆ area_handle()

template<typename Identifier >
data_handle<field::Area::type> neuron::container::Node::handle_interface< Identifier >::area_handle ( )
inline

Return a data_handle to the area.

Definition at line 137 of file node.hpp.

◆ b() [1/2]

template<typename Identifier >
field::BelowDiagonal::type& neuron::container::Node::handle_interface< Identifier >::b ( )
inline

Return the below-diagonal element.

Definition at line 144 of file node.hpp.

◆ b() [2/2]

template<typename Identifier >
field::BelowDiagonal::type const& neuron::container::Node::handle_interface< Identifier >::b ( ) const
inline

Return the below-diagonal element.

Definition at line 151 of file node.hpp.

◆ d() [1/2]

template<typename Identifier >
field::Diagonal::type& neuron::container::Node::handle_interface< Identifier >::d ( )
inline

Return the diagonal element.

Definition at line 158 of file node.hpp.

◆ d() [2/2]

template<typename Identifier >
field::Diagonal::type const& neuron::container::Node::handle_interface< Identifier >::d ( ) const
inline

Return the diagonal element.

Definition at line 165 of file node.hpp.

◆ rhs() [1/2]

template<typename Identifier >
field::RHS::type& neuron::container::Node::handle_interface< Identifier >::rhs ( )
inline

Return the right hand side of the Hines solver.

Definition at line 209 of file node.hpp.

◆ rhs() [2/2]

template<typename Identifier >
field::RHS::type const& neuron::container::Node::handle_interface< Identifier >::rhs ( ) const
inline

Return the right hand side of the Hines solver.

Definition at line 216 of file node.hpp.

◆ rhs_handle()

template<typename Identifier >
data_handle<field::RHS::type> neuron::container::Node::handle_interface< Identifier >::rhs_handle ( )
inline

Return a handle to the right hand side of the Hines solver.

Definition at line 223 of file node.hpp.

◆ sav_d() [1/2]

template<typename Identifier >
field::FastIMemSavRHS::type& neuron::container::Node::handle_interface< Identifier >::sav_d ( )
inline

Definition at line 227 of file node.hpp.

◆ sav_d() [2/2]

template<typename Identifier >
field::FastIMemSavRHS::type const& neuron::container::Node::handle_interface< Identifier >::sav_d ( ) const
inline

Definition at line 231 of file node.hpp.

◆ sav_rhs() [1/2]

template<typename Identifier >
field::FastIMemSavRHS::type& neuron::container::Node::handle_interface< Identifier >::sav_rhs ( )
inline

Definition at line 235 of file node.hpp.

◆ sav_rhs() [2/2]

template<typename Identifier >
field::FastIMemSavRHS::type const& neuron::container::Node::handle_interface< Identifier >::sav_rhs ( ) const
inline

Definition at line 239 of file node.hpp.

◆ sav_rhs_handle()

template<typename Identifier >
data_handle<field::FastIMemSavRHS::type> neuron::container::Node::handle_interface< Identifier >::sav_rhs_handle ( )
inline

Definition at line 242 of file node.hpp.

◆ v() [1/2]

template<typename Identifier >
field::Voltage::type& neuron::container::Node::handle_interface< Identifier >::v ( )
inline

Return the membrane potential.

Definition at line 172 of file node.hpp.

◆ v() [2/2]

template<typename Identifier >
field::Voltage::type const& neuron::container::Node::handle_interface< Identifier >::v ( ) const
inline

Return the membrane potential.

Definition at line 179 of file node.hpp.

◆ v_hack() [1/2]

template<typename Identifier >
field::Voltage::type& neuron::container::Node::handle_interface< Identifier >::v_hack ( )
inline

This is a workaround for v sometimes being a macro.

Todo:
Remove those macros once and for all.

Definition at line 194 of file node.hpp.

◆ v_hack() [2/2]

template<typename Identifier >
field::Voltage::type const& neuron::container::Node::handle_interface< Identifier >::v_hack ( ) const
inline

This is a workaround for v sometimes being a macro.

Todo:
Remove those macros once and for all.

Definition at line 202 of file node.hpp.

◆ v_handle()

template<typename Identifier >
data_handle<field::Voltage::type> neuron::container::Node::handle_interface< Identifier >::v_handle ( )
inline

Return a handle to the membrane potential.

Definition at line 186 of file node.hpp.

Friends And Related Function Documentation

◆ operator<<

template<typename Identifier >
std::ostream& operator<< ( std::ostream &  os,
handle_interface< Identifier > const &  handle 
)
friend

Definition at line 246 of file node.hpp.


The documentation for this struct was generated from the following file: