NEURON
neuron::container::owning_identifier< Storage > Struct Template Reference

An owning permutation-stable identifier for a entry in a container. More...

#include <soa_identifier.hpp>

Public Types

using storage_type = Storage
 

Public Member Functions

 owning_identifier (Storage &storage)
 Create a non-null owning identifier by creating a new entry. More...
 
 owning_identifier (const owning_identifier &)=delete
 
 owning_identifier (owning_identifier &&other) noexcept
 
owning_identifieroperator= (const owning_identifier &)=delete
 
owning_identifieroperator= (owning_identifier &&other)
 
 ~owning_identifier ()
 
Storage & underlying_storage ()
 Return a reference to the container in which this entry lives. More...
 
Storage const & underlying_storage () const
 Return a const reference to the container in which this entry lives. More...
 
 operator non_owning_identifier< Storage > () const
 
 operator non_owning_identifier_without_container () const
 
std::size_t current_row () const
 What is the current row? More...
 

Private Member Functions

 owning_identifier ()=default
 
void destroy ()
 
void set_current_row (std::size_t new_row)
 
 owning_identifier (Storage &storage, std::size_t row)
 Create a non-null owning identifier that owns the given row. More...
 

Private Attributes

non_owning_identifier_without_container m_ptr {}
 
Storage * m_data_ptr {}
 

Friends

template<typename , typename... >
struct soa
 
std::ostream & operator<< (std::ostream &os, owning_identifier const &oi)
 

Detailed Description

template<typename Storage>
struct neuron::container::owning_identifier< Storage >

An owning permutation-stable identifier for a entry in a container.

Template Parameters
StorageThe type of the referred-to container, which is expected to be a type derived from neuron::container::soa<...>

This identifier has owning semantics, meaning that when it is destroyed the corresponding entry in the container is deleted.

Definition at line 72 of file soa_identifier.hpp.

Member Typedef Documentation

◆ storage_type

template<typename Storage >
using neuron::container::owning_identifier< Storage >::storage_type = Storage

Definition at line 139 of file soa_identifier.hpp.

Constructor & Destructor Documentation

◆ owning_identifier() [1/5]

template<typename Storage >
neuron::container::owning_identifier< Storage >::owning_identifier ( Storage &  storage)
inline

Create a non-null owning identifier by creating a new entry.

Definition at line 76 of file soa_identifier.hpp.

◆ owning_identifier() [2/5]

template<typename Storage >
neuron::container::owning_identifier< Storage >::owning_identifier ( const owning_identifier< Storage > &  )
delete

◆ owning_identifier() [3/5]

template<typename Storage >
neuron::container::owning_identifier< Storage >::owning_identifier ( owning_identifier< Storage > &&  other)
inlinenoexcept

Definition at line 80 of file soa_identifier.hpp.

◆ ~owning_identifier()

template<typename Storage >
neuron::container::owning_identifier< Storage >::~owning_identifier ( )
inline

Definition at line 98 of file soa_identifier.hpp.

◆ owning_identifier() [4/5]

template<typename Storage >
neuron::container::owning_identifier< Storage >::owning_identifier ( )
privatedefault

◆ owning_identifier() [5/5]

template<typename Storage >
neuron::container::owning_identifier< Storage >::owning_identifier ( Storage &  storage,
std::size_t  row 
)
inlineprivate

Create a non-null owning identifier that owns the given row.

This is used inside neuron::container::soa<...>::acquire_owning_identifier() and should not be used without great care.

Definition at line 210 of file soa_identifier.hpp.

Member Function Documentation

◆ current_row()

template<typename Storage >
std::size_t neuron::container::owning_identifier< Storage >::current_row ( ) const
inline

What is the current row?

The returned value is invalidated by any deletions from the underlying container, and by any permutations of the underlying container.

Definition at line 130 of file soa_identifier.hpp.

◆ destroy()

template<typename Storage >
void neuron::container::owning_identifier< Storage >::destroy ( )
inlineprivate

Definition at line 144 of file soa_identifier.hpp.

◆ operator non_owning_identifier< Storage >()

template<typename Storage >
neuron::container::owning_identifier< Storage >::operator non_owning_identifier< Storage > ( ) const
inline

Definition at line 116 of file soa_identifier.hpp.

◆ operator non_owning_identifier_without_container()

template<typename Storage >
neuron::container::owning_identifier< Storage >::operator non_owning_identifier_without_container ( ) const
inline

Definition at line 120 of file soa_identifier.hpp.

◆ operator=() [1/2]

template<typename Storage >
owning_identifier& neuron::container::owning_identifier< Storage >::operator= ( const owning_identifier< Storage > &  )
delete

◆ operator=() [2/2]

template<typename Storage >
owning_identifier& neuron::container::owning_identifier< Storage >::operator= ( owning_identifier< Storage > &&  other)
inline

Definition at line 87 of file soa_identifier.hpp.

◆ set_current_row()

template<typename Storage >
void neuron::container::owning_identifier< Storage >::set_current_row ( std::size_t  new_row)
inlineprivate

Definition at line 199 of file soa_identifier.hpp.

◆ underlying_storage() [1/2]

template<typename Storage >
Storage& neuron::container::owning_identifier< Storage >::underlying_storage ( )
inline

Return a reference to the container in which this entry lives.

Definition at line 105 of file soa_identifier.hpp.

◆ underlying_storage() [2/2]

template<typename Storage >
Storage const& neuron::container::owning_identifier< Storage >::underlying_storage ( ) const
inline

Return a const reference to the container in which this entry lives.

Definition at line 112 of file soa_identifier.hpp.

Friends And Related Function Documentation

◆ operator<<

template<typename Storage >
std::ostream& operator<< ( std::ostream &  os,
owning_identifier< Storage > const &  oi 
)
friend

Definition at line 135 of file soa_identifier.hpp.

◆ soa

template<typename Storage >
template<typename , typename... >
friend struct soa
friend

Definition at line 198 of file soa_identifier.hpp.

Member Data Documentation

◆ m_data_ptr

template<typename Storage >
Storage* neuron::container::owning_identifier< Storage >::m_data_ptr {}
private

Definition at line 195 of file soa_identifier.hpp.

◆ m_ptr

template<typename Storage >
non_owning_identifier_without_container neuron::container::owning_identifier< Storage >::m_ptr {}
private

Definition at line 194 of file soa_identifier.hpp.


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