DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
IteratorCompletion.h
1
16
17
#pragma once
18
28
29
#if defined(IteratorCompletion_RECURSES)
30
#error Recursive header files inclusion detected in IteratorCompletion.h
31
#else
// defined(IteratorCompletion_RECURSES)
33
#define IteratorCompletion_RECURSES
34
35
#if !defined IteratorCompletion_h
37
#define IteratorCompletion_h
38
40
// Inclusions
41
#include <boost/iterator/reverse_iterator.hpp>
42
#include <DGtal/base/SimpleRandomAccessRangeFromPoint.h>
43
#include <DGtal/base/SimpleRandomAccessConstRangeFromPoint.h>
45
46
namespace
DGtal
47
{
48
50
65
template
<
typename
TDerived >
66
class
IteratorCompletionTraits
;
67
113
template
<
114
typename
TDerived
115
>
116
class
IteratorCompletion
117
{
118
public
:
119
120
typedef
typename
IteratorCompletionTraits<TDerived>::Iterator
Iterator
;
121
typedef
typename
IteratorCompletionTraits<TDerived>::ConstIterator
ConstIterator
;
122
typedef
typename
IteratorCompletionTraits<TDerived>::DistanceFunctor
DistanceFunctor
;
123
124
typedef
boost::reverse_iterator<Iterator>
ReverseIterator
;
125
typedef
boost::reverse_iterator<ConstIterator>
ConstReverseIterator
;
126
typedef
SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >
Range
;
127
typedef
SimpleRandomAccessConstRangeFromPoint< ConstIterator, DistanceFunctor >
ConstRange
;
128
typedef
std::ptrdiff_t
Difference
;
129
134
ReverseIterator
rbegin
()
135
{
136
return
ReverseIterator
(
static_cast<
TDerived*
>
(
this
)->end() );
137
}
138
143
inline
144
ConstReverseIterator
rbegin
()
const
145
{
146
return
ConstReverseIterator
(
static_cast<
TDerived*
>
(
this
)->end() );
147
}
148
153
inline
154
ConstReverseIterator
crbegin
()
const
155
{
156
return
ConstReverseIterator
(
static_cast<
TDerived*
>
(
this
)->cend() );
157
}
158
163
inline
164
ReverseIterator
rend
()
165
{
166
return
ReverseIterator
(
static_cast<
TDerived*
>
(
this
)->begin() );
167
}
168
173
inline
174
ConstReverseIterator
rend
()
const
175
{
176
return
ConstReverseIterator
(
static_cast<
TDerived*
>
(
this
)->begin() );
177
}
178
183
inline
184
ConstReverseIterator
crend
()
const
185
{
186
return
ConstReverseIterator
(
static_cast<
TDerived*
>
(
this
)->cbegin() );
187
}
188
194
inline
195
Range
range
()
196
{
197
TDerived*
const
derived =
static_cast<
TDerived*
>
(
this
);
198
return
Range
(
199
derived->begin(),
200
derived->end(),
201
typename
IteratorCompletionTraits<TDerived>::DistanceFunctor
( derived )
202
);
203
}
204
210
inline
211
ConstRange
constRange
()
const
212
{
213
TDerived
const
*
const
derived =
static_cast<
TDerived const*
>
(
this
);
214
return
ConstRange
(
215
derived->begin(),
216
derived->end(),
217
typename
IteratorCompletionTraits<TDerived>::DistanceFunctor
( derived )
218
);
219
}
220
221
protected
:
222
224
~IteratorCompletion
()
225
{}
226
};
227
228
}
// namespace DGtal
229
230
// //
232
233
#endif
// !defined IteratorCompletion_h
234
235
#undef IteratorCompletion_RECURSES
236
#endif
// else defined(IteratorCompletion_RECURSES)
DGtal::IteratorCompletionTraits
Aim: Traits that must be specialized for each IteratorCompletion derived class.
Definition
IteratorCompletion.h:66
DGtal::IteratorCompletion
Aim: Class that uses CRTP to add reverse iterators and ranges to a derived class.
Definition
IteratorCompletion.h:117
DGtal::IteratorCompletion::ConstIterator
IteratorCompletionTraits< TDerived >::ConstIterator ConstIterator
Constant iterator type.
Definition
IteratorCompletion.h:121
DGtal::IteratorCompletion::~IteratorCompletion
~IteratorCompletion()
Protected destructor to avoid memory leak.
Definition
IteratorCompletion.h:224
DGtal::IteratorCompletion::Iterator
IteratorCompletionTraits< TDerived >::Iterator Iterator
Mutable iterator type.
Definition
IteratorCompletion.h:120
DGtal::IteratorCompletion::range
Range range()
Definition
IteratorCompletion.h:195
DGtal::IteratorCompletion::Range
SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor > Range
Mutable range type.
Definition
IteratorCompletion.h:126
DGtal::IteratorCompletion::crend
ConstReverseIterator crend() const
Definition
IteratorCompletion.h:184
DGtal::IteratorCompletion::Difference
std::ptrdiff_t Difference
Type of the distance between two iterators.
Definition
IteratorCompletion.h:128
DGtal::IteratorCompletion::rend
ReverseIterator rend()
Definition
IteratorCompletion.h:164
DGtal::IteratorCompletion::rend
ConstReverseIterator rend() const
Definition
IteratorCompletion.h:174
DGtal::IteratorCompletion::DistanceFunctor
IteratorCompletionTraits< TDerived >::DistanceFunctor DistanceFunctor
Type of the functor calculating the distance between iterators.
Definition
IteratorCompletion.h:122
DGtal::IteratorCompletion::rbegin
ConstReverseIterator rbegin() const
Definition
IteratorCompletion.h:144
DGtal::IteratorCompletion::ReverseIterator
boost::reverse_iterator< Iterator > ReverseIterator
Mutable reverse iterator type.
Definition
IteratorCompletion.h:124
DGtal::IteratorCompletion::crbegin
ConstReverseIterator crbegin() const
Definition
IteratorCompletion.h:154
DGtal::IteratorCompletion::ConstReverseIterator
boost::reverse_iterator< ConstIterator > ConstReverseIterator
Constant reverse iterator type.
Definition
IteratorCompletion.h:125
DGtal::IteratorCompletion::rbegin
ReverseIterator rbegin()
Definition
IteratorCompletion.h:134
DGtal::IteratorCompletion::ConstRange
SimpleRandomAccessConstRangeFromPoint< ConstIterator, DistanceFunctor > ConstRange
Constant range type.
Definition
IteratorCompletion.h:127
DGtal::IteratorCompletion::constRange
ConstRange constRange() const
Definition
IteratorCompletion.h:211
DGtal::ReverseIterator::ReverseIterator
ReverseIterator()
Definition
ReverseIterator.h:81
DGtal::SimpleRandomAccessConstRangeFromPoint< ConstIterator, DistanceFunctor >
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
src
DGtal
base
IteratorCompletion.h
Generated on
for DGtal by
1.18.0