BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
OutputDataIterator< TValue, TContainer > Class Template Reference

Iterator for underlying OutputData container. More...

Public Types

typedef ptrdiff_t difference_type
 
typedef std::forward_iterator_tag iterator_category
 
typedef TValue * pointer
 
typedef TValue * pointer_type
 
typedef TValue & reference
 
typedef TValue & reference_type
 
typedef TValue value_type
 

Public Member Functions

 OutputDataIterator ()
 Empty constructor to comply with stl forward iterators. More...
 
 OutputDataIterator (const OutputDataIterator< TValue, TContainer > &other)
 non-templated copy construction More...
 
template<class TValue2 , class TContainer2 >
 OutputDataIterator (const OutputDataIterator< TValue2, TContainer2 > &other)
 templated copy construction More...
 
 OutputDataIterator (TContainer *p_output_data, size_t start_at_index=0)
 constructor More...
 
 ~OutputDataIterator ()
 
TContainer * getContainer () const
 Returns container pointer. More...
 
size_t getIndex () const
 Returns current index. More...
 
TValue & operator* () const
 retrieve current element More...
 
OutputDataIterator< TValue, TContainer > & operator++ ()
 prefix increment More...
 
OutputDataIterator< TValue, TContainer > operator++ (int)
 postfix increment More...
 
TValue * operator-> () const
 pointer access More...
 
OutputDataIterator< TValue, TContainer > & operator= (const OutputDataIterator< TValue, TContainer > &right)
 non-templated copy asssignment More...
 
template<class TValue2 , class TContainer2 >
OutputDataIterator< TValue, TContainer > & operator= (const OutputDataIterator< TValue2, TContainer2 > &right)
 templated copy assignment More...
 
void swap (OutputDataIterator< TValue, TContainer > &other)
 Swaps iterators. More...
 

Private Attributes

size_t m_current_index
 
TContainer * m_output_data
 

Detailed Description

template<class TValue, class TContainer>
class OutputDataIterator< TValue, TContainer >

Iterator for underlying OutputData container.

Definition at line 30 of file OutputDataIterator.h.

Member Typedef Documentation

◆ difference_type

template<class TValue , class TContainer >
typedef ptrdiff_t OutputDataIterator< TValue, TContainer >::difference_type

Definition at line 80 of file OutputDataIterator.h.

◆ iterator_category

template<class TValue , class TContainer >
typedef std::forward_iterator_tag OutputDataIterator< TValue, TContainer >::iterator_category

Definition at line 78 of file OutputDataIterator.h.

◆ pointer

template<class TValue , class TContainer >
typedef TValue* OutputDataIterator< TValue, TContainer >::pointer

Definition at line 84 of file OutputDataIterator.h.

◆ pointer_type

template<class TValue , class TContainer >
typedef TValue* OutputDataIterator< TValue, TContainer >::pointer_type

Definition at line 81 of file OutputDataIterator.h.

◆ reference

template<class TValue , class TContainer >
typedef TValue& OutputDataIterator< TValue, TContainer >::reference

Definition at line 85 of file OutputDataIterator.h.

◆ reference_type

template<class TValue , class TContainer >
typedef TValue& OutputDataIterator< TValue, TContainer >::reference_type

Definition at line 82 of file OutputDataIterator.h.

◆ value_type

template<class TValue , class TContainer >
typedef TValue OutputDataIterator< TValue, TContainer >::value_type

Definition at line 79 of file OutputDataIterator.h.

Constructor & Destructor Documentation

◆ OutputDataIterator() [1/4]

template<class TValue , class TContainer >
OutputDataIterator< TValue, TContainer >::OutputDataIterator

Empty constructor to comply with stl forward iterators.

Definition at line 112 of file OutputDataIterator.h.

113 {
114 }
TContainer * m_output_data

◆ OutputDataIterator() [2/4]

template<class TValue , class TContainer >
OutputDataIterator< TValue, TContainer >::OutputDataIterator ( TContainer *  p_output_data,
size_t  start_at_index = 0 
)

constructor

Definition at line 117 of file OutputDataIterator.h.

119  : m_current_index(start_at_index), m_output_data(p_output_data)
120 {
121 }

◆ OutputDataIterator() [3/4]

template<class TValue , class TContainer >
template<class TValue2 , class TContainer2 >
OutputDataIterator< TValue, TContainer >::OutputDataIterator ( const OutputDataIterator< TValue2, TContainer2 > &  other)

templated copy construction

Definition at line 125 of file OutputDataIterator.h.

128 {
129  m_output_data = static_cast<TContainer*>(other.getContainer());
130  m_current_index = other.getIndex();
131 }
size_t getIndex() const
Returns current index.
TContainer * getContainer() const
Returns container pointer.

References OutputDataIterator< TValue, TContainer >::getContainer(), OutputDataIterator< TValue, TContainer >::getIndex(), OutputDataIterator< TValue, TContainer >::m_current_index, and OutputDataIterator< TValue, TContainer >::m_output_data.

Here is the call graph for this function:

◆ OutputDataIterator() [4/4]

template<class TValue , class TContainer >
OutputDataIterator< TValue, TContainer >::OutputDataIterator ( const OutputDataIterator< TValue, TContainer > &  other)

non-templated copy construction

Definition at line 134 of file OutputDataIterator.h.

137 {
138  m_output_data = other.getContainer();
139  m_current_index = other.getIndex();
140 }

References OutputDataIterator< TValue, TContainer >::getContainer(), OutputDataIterator< TValue, TContainer >::getIndex(), OutputDataIterator< TValue, TContainer >::m_current_index, and OutputDataIterator< TValue, TContainer >::m_output_data.

Here is the call graph for this function:

◆ ~OutputDataIterator()

template<class TValue , class TContainer >
OutputDataIterator< TValue, TContainer >::~OutputDataIterator

Definition at line 162 of file OutputDataIterator.h.

163 {
164 }

Member Function Documentation

◆ getContainer()

template<class TValue , class TContainer >
TContainer* OutputDataIterator< TValue, TContainer >::getContainer ( ) const
inline

Returns container pointer.

Definition at line 72 of file OutputDataIterator.h.

72 { return m_output_data; }

References OutputDataIterator< TValue, TContainer >::m_output_data.

Referenced by OutputDataIterator< TValue, TContainer >::OutputDataIterator(), and operator==().

◆ getIndex()

template<class TValue , class TContainer >
size_t OutputDataIterator< TValue, TContainer >::getIndex ( ) const
inline

◆ operator*()

template<class TValue , class TContainer >
TValue & OutputDataIterator< TValue, TContainer >::operator*

retrieve current element

Definition at line 184 of file OutputDataIterator.h.

185 {
186  return (*m_output_data)[m_current_index];
187 }

◆ operator++() [1/2]

template<class TValue , class TContainer >
OutputDataIterator< TValue, TContainer > & OutputDataIterator< TValue, TContainer >::operator++

prefix increment

Definition at line 167 of file OutputDataIterator.h.

168 {
169  if (m_current_index < m_output_data->getAllocatedSize()) {
170  ++m_current_index;
171  }
172  return *this;
173 }

◆ operator++() [2/2]

template<class TValue , class TContainer >
OutputDataIterator< TValue, TContainer > OutputDataIterator< TValue, TContainer >::operator++ ( int  )

postfix increment

Definition at line 176 of file OutputDataIterator.h.

177 {
179  this->operator++();
180  return result;
181 }
Iterator for underlying OutputData container.
OutputDataIterator< TValue, TContainer > & operator++()
prefix increment

◆ operator->()

template<class TValue , class TContainer >
TValue * OutputDataIterator< TValue, TContainer >::operator->

pointer access

Definition at line 190 of file OutputDataIterator.h.

191 {
192  return &((*m_output_data)[m_current_index]);
193 }

◆ operator=() [1/2]

template<class TValue , class TContainer >
OutputDataIterator< TValue, TContainer > & OutputDataIterator< TValue, TContainer >::operator= ( const OutputDataIterator< TValue, TContainer > &  right)

non-templated copy asssignment

Definition at line 153 of file OutputDataIterator.h.

155 {
157  swap(copy);
158  return *this;
159 }
void swap(OutputDataIterator< TValue, TContainer > &other)
Swaps iterators.
@ copy
full deep copying with item identifiers regenerated

References swap().

Here is the call graph for this function:

◆ operator=() [2/2]

template<class TValue , class TContainer >
template<class TValue2 , class TContainer2 >
OutputDataIterator< TValue, TContainer > & OutputDataIterator< TValue, TContainer >::operator= ( const OutputDataIterator< TValue2, TContainer2 > &  right)

templated copy assignment

Definition at line 144 of file OutputDataIterator.h.

146 {
148  swap(copy);
149  return *this;
150 }

References swap().

Here is the call graph for this function:

◆ swap()

template<class TValue , class TContainer >
void OutputDataIterator< TValue, TContainer >::swap ( OutputDataIterator< TValue, TContainer > &  other)

Swaps iterators.

Definition at line 196 of file OutputDataIterator.h.

197 {
199  std::swap(this->m_output_data, other.m_output_data);
200 }
void swap(OutputDataIterator< TValue, TContainer > &left, OutputDataIterator< TValue, TContainer > &right)
make Swappable

References OutputDataIterator< TValue, TContainer >::m_current_index, OutputDataIterator< TValue, TContainer >::m_output_data, and swap().

Referenced by swap().

Here is the call graph for this function:

Member Data Documentation

◆ m_current_index

template<class TValue , class TContainer >
size_t OutputDataIterator< TValue, TContainer >::m_current_index
private

◆ m_output_data

template<class TValue , class TContainer >
TContainer* OutputDataIterator< TValue, TContainer >::m_output_data
private

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