15 #ifndef BORNAGAIN_CORE_INTENSITY_OUTPUTDATAITERATOR_H
16 #define BORNAGAIN_CORE_INTENSITY_OUTPUTDATAITERATOR_H
35 template <
class TValue2,
class TContainer2>
42 template <
class TValue2,
class TContainer2>
65 size_t getIndex()
const {
return m_current_index; }
74 typedef std::forward_iterator_tag iterator_category;
75 typedef TValue value_type;
76 typedef ptrdiff_t difference_type;
77 typedef TValue* pointer_type;
78 typedef TValue& reference_type;
80 typedef TValue* pointer;
81 typedef TValue& reference;
85 size_t m_current_index;
86 TContainer* mp_output_data;
90 template <
class TValue,
class TContainer>
98 template <
class TValue1,
class TContainer1,
class TValue2,
class TContainer2>
103 template <
class TValue1,
class TContainer1,
class TValue2,
class TContainer2>
107 template <
class TValue,
class TContainer>
112 template <
class TValue,
class TContainer>
114 size_t start_at_index)
115 : m_current_index(start_at_index), mp_output_data(p_output_data)
119 template <
class TValue,
class TContainer>
120 template <
class TValue2,
class TContainer2>
123 : m_current_index(0), mp_output_data(0)
125 mp_output_data =
static_cast<TContainer*
>(other.
getContainer());
129 template <
class TValue,
class TContainer>
132 : m_current_index(0), mp_output_data(0)
138 template <
class TValue,
class TContainer>
139 template <
class TValue2,
class TContainer2>
148 template <
class TValue,
class TContainer>
157 template <
class TValue,
class TContainer>
162 template <
class TValue,
class TContainer>
165 if (m_current_index < mp_output_data->getAllocatedSize()) {
171 template <
class TValue,
class TContainer>
179 template <
class TValue,
class TContainer>
182 return (*mp_output_data)[m_current_index];
185 template <
class TValue,
class TContainer>
188 return &((*mp_output_data)[m_current_index]);
191 template <
class TValue,
class TContainer>
194 std::swap(this->m_current_index, other.m_current_index);
195 std::swap(this->mp_output_data, other.mp_output_data);
199 template <
class TValue1,
class TContainer1,
class TValue2,
class TContainer2>
207 template <
class TValue1,
class TContainer1,
class TValue2,
class TContainer2>
211 return !(left == right);
void swap(OutputDataIterator< TValue, TContainer > &left, OutputDataIterator< TValue, TContainer > &right)
make Swappable
bool operator!=(const BasicVector3D< T > &a, const BasicVector3D< T > &b)
Comparison of two vectors for inequality.
bool operator==(const BasicVector3D< T > &a, const BasicVector3D< T > &b)
Comparison of two vectors for equality.
Iterator for underlying OutputData container.
OutputDataIterator< TValue, TContainer > & operator=(const OutputDataIterator< TValue2, TContainer2 > &right)
templated copy assignment
OutputDataIterator< TValue, TContainer > & operator++()
prefix increment
void swap(OutputDataIterator< TValue, TContainer > &other)
Swaps iterators.
size_t getIndex() const
Returns current index.
TContainer * getContainer() const
Returns container pointer.
TValue * operator->() const
pointer access
OutputDataIterator()
Empty constructor to comply with stl forward iterators.
TValue & operator*() const
retrieve current element