DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
SimpleRandomAccessRangeFromPoint.h
1
16
17
#pragma once
18
32
33
#if defined(SimpleRandomAccessRangeFromPoint_RECURSES)
34
#error Recursive header files inclusion detected in SimpleRandomAccessRangeFromPoint.h
35
#else
// defined(SimpleRandomAccessRangeFromPoint_RECURSES)
37
#define SimpleRandomAccessRangeFromPoint_RECURSES
38
39
#if !defined SimpleRandomAccessRangeFromPoint_h
41
#define SimpleRandomAccessRangeFromPoint_h
42
44
// Inclusions
45
#include "DGtal/base/BasicFunctors.h"
46
#include "DGtal/base/Circulator.h"
47
#include "DGtal/base/IteratorAdapter.h"
48
#include "DGtal/base/CBidirectionalRangeFromPoint.h"
49
#include "boost/concept_check.hpp"
50
#include "boost/iterator/reverse_iterator.hpp"
52
53
namespace
DGtal
54
{
55
56
58
// class SimpleRandomAccessRangeFromPoint
60
72
template
<
typename
TConstIterator,
typename
TIterator,
typename
DistanceFunctor>
73
74
class
SimpleRandomAccessRangeFromPoint
75
{
76
77
BOOST_CONCEPT_ASSERT
( (
boost::RandomAccessIterator<TIterator>
) );
78
BOOST_CONCEPT_ASSERT
( (
boost::RandomAccessIterator<TConstIterator>
) );
79
BOOST_CONCEPT_ASSERT
( (
boost::UnaryFunction<DistanceFunctor,typename DistanceFunctor::Difference,typename DistanceFunctor::Point >
) );
80
81
// ------------------------- inner types --------------------------------
82
83
public
:
84
85
typedef
typename
DistanceFunctor::Point
Point
;
86
87
typedef
TIterator
Iterator
;
88
typedef
TConstIterator
ConstIterator
;
89
90
typedef
boost::reverse_iterator<Iterator>
ReverseIterator
;
91
typedef
boost::reverse_iterator<ConstIterator>
ConstReverseIterator
;
92
93
typedef
TIterator
OutputIterator
;
94
typedef
boost::reverse_iterator<Iterator>
ReverseOutputIterator
;
95
96
typedef
DGtal::Circulator<Iterator>
Circulator
;
97
typedef
boost::reverse_iterator<Circulator>
ReverseCirculator
;
98
99
typedef
DGtal::Circulator<ConstIterator>
ConstCirculator
;
100
typedef
boost::reverse_iterator<ConstCirculator>
ConstReverseCirculator
;
101
102
// ------------------------- standard services --------------------------------
103
112
SimpleRandomAccessRangeFromPoint
(
const
TIterator& itb,
113
const
TIterator& ite,
114
const
DistanceFunctor
& aDistance )
115
:
myBegin
( itb ),
myEnd
( ite ),
myDistance
( aDistance ) {}
116
121
SimpleRandomAccessRangeFromPoint
(
const
SimpleRandomAccessRangeFromPoint
& other )
122
:
myBegin
( other.
myBegin
),
myEnd
( other.
myEnd
),
123
myDistance
( other.
myDistance
) {}
124
130
SimpleRandomAccessRangeFromPoint
&
operator=
(
const
SimpleRandomAccessRangeFromPoint
& other )
131
{
132
if
(
this
!= &other )
133
{
134
myBegin
= other.
myBegin
;
135
myEnd
= other.
myEnd
;
136
myDistance
= other.
myDistance
;
137
}
138
139
return
*
this
;
140
}
141
145
~SimpleRandomAccessRangeFromPoint
() {}
146
151
bool
isValid
()
const
152
{
153
return
true
;
154
}
155
156
// ------------------------- display --------------------------------
161
void
selfDisplay
( std::ostream & out )
const
162
{
163
typedef
typename
IteratorCirculatorTraits<Iterator>::Value
Value
;
164
out <<
"[SimpleRandomAccessRangeFromPoint]"
<< std::endl;
165
out <<
"\t"
;
166
std::copy (
myBegin
,
myEnd
, std::ostream_iterator<Value> ( out,
", "
) );
167
out << std::endl;
168
}
169
173
std::string
className
()
const
174
{
175
return
"SimpleRandomAccessRangeFromPoint"
;
176
}
177
178
179
// ------------------------- private data --------------------------------
180
181
private
:
185
TIterator
myBegin
;
189
TIterator
myEnd
;
190
194
DistanceFunctor
myDistance
;
195
196
// ------------------------- iterator services --------------------------------
197
198
public
:
199
204
Iterator
begin
()
205
{
206
return
Iterator
(
myBegin
);
207
}
208
209
215
Iterator
begin
(
const
Point
&
aPoint
)
216
{
217
return
Iterator
(
myBegin
) +
myDistance
(
aPoint
);
218
}
219
224
ConstIterator
begin
()
const
225
{
226
return
ConstIterator
(
myBegin
);
227
}
228
229
235
ConstIterator
begin
(
const
Point
&
aPoint
)
const
236
{
237
return
ConstIterator
(
myBegin
) +
myDistance
(
aPoint
);
238
}
239
244
Iterator
end
()
245
{
246
return
Iterator
(
myEnd
);
247
}
248
253
ConstIterator
end
()
const
254
{
255
return
ConstIterator
(
myEnd
);
256
}
257
262
OutputIterator
outputIterator
()
263
{
264
return
OutputIterator
(
myBegin
);
265
}
266
272
OutputIterator
outputIterator
(
const
Point
&
aPoint
)
273
{
274
return
OutputIterator
(
myBegin
) +
myDistance
(
aPoint
) ;
275
}
276
281
ReverseOutputIterator
routputIterator
()
282
{
283
return
ReverseOutputIterator
( this->
end
() );
284
}
285
291
ReverseOutputIterator
routputIterator
(
const
Point
&
aPoint
)
292
{
293
return
ReverseOutputIterator
(
myBegin
+
myDistance
(
aPoint
) + 1 ) ;
294
}
295
300
ReverseIterator
rbegin
()
301
{
302
return
ReverseIterator
( this->
end
() );
303
}
304
310
ReverseIterator
rbegin
(
const
Point
&
aPoint
)
311
{
312
return
ReverseIterator
(
myBegin
+
myDistance
(
aPoint
) + 1 );
313
}
314
315
320
ReverseIterator
rend
()
321
{
322
return
ReverseIterator
(
myBegin
);
323
}
324
325
330
ConstReverseIterator
rbegin
()
const
331
{
332
return
ConstReverseIterator
( this->
end
() );
333
}
334
340
ConstReverseIterator
rbegin
(
const
Point
&
aPoint
)
const
341
{
342
return
ConstReverseIterator
(
myBegin
+
myDistance
(
aPoint
) + 1 );
343
}
344
345
350
ConstReverseIterator
rend
()
const
351
{
352
return
ConstReverseIterator
(
myBegin
);
353
}
354
359
Circulator
c
()
360
{
361
return
Circulator
( this->
begin
(), this->
begin
(), this->
end
() );
362
}
363
368
ReverseCirculator
rc
()
369
{
370
return
ReverseCirculator
( this->
c
() );
371
}
372
377
ConstCirculator
c
()
const
378
{
379
return
ConstCirculator
( this->
begin
(), this->
begin
(), this->
end
() );
380
}
381
386
ConstReverseCirculator
rc
()
const
387
{
388
return
ConstReverseCirculator
( this->
c
() );
389
}
390
391
};
//end class SimpleRandomAccessRangeFromPoint
392
393
}
// namespace DGtal
394
396
397
398
#endif
// !defined SimpleRandomAccessRangeFromPoint_h
399
400
#undef SimpleRandomAccessRangeFromPoint_RECURSES
401
#endif
// else defined(SimpleRandomAccessRangeFromPoint_RECURSES)
DGtal::Circulator
Aim: Provides an adapter for classical iterators that can iterate through the underlying data structu...
Definition
Circulator.h:86
DGtal::Circulator< Iterator >::Circulator
Circulator()
Definition
Circulator.h:118
DGtal::DistanceFunctor
DGtal::ReverseIterator::ReverseIterator
ReverseIterator()
Definition
ReverseIterator.h:81
DGtal::SimpleRandomAccessRangeFromPoint::selfDisplay
void selfDisplay(std::ostream &out) const
Definition
SimpleRandomAccessRangeFromPoint.h:161
DGtal::SimpleRandomAccessRangeFromPoint::isValid
bool isValid() const
Definition
SimpleRandomAccessRangeFromPoint.h:151
DGtal::SimpleRandomAccessRangeFromPoint::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((boost::UnaryFunction< DistanceFunctor, typename DistanceFunctor::Difference, typename DistanceFunctor::Point >))
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::myEnd
Iterator myEnd
Definition
SimpleRandomAccessRangeFromPoint.h:189
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::myDistance
DistanceFunctor myDistance
Definition
SimpleRandomAccessRangeFromPoint.h:194
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::ConstReverseIterator
boost::reverse_iterator< ConstIterator > ConstReverseIterator
Definition
SimpleRandomAccessRangeFromPoint.h:91
DGtal::SimpleRandomAccessRangeFromPoint::rend
ConstReverseIterator rend() const
Definition
SimpleRandomAccessRangeFromPoint.h:350
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::OutputIterator
Iterator OutputIterator
Definition
SimpleRandomAccessRangeFromPoint.h:93
DGtal::SimpleRandomAccessRangeFromPoint::begin
ConstIterator begin() const
Definition
SimpleRandomAccessRangeFromPoint.h:224
DGtal::SimpleRandomAccessRangeFromPoint::begin
Iterator begin()
Definition
SimpleRandomAccessRangeFromPoint.h:204
DGtal::SimpleRandomAccessRangeFromPoint::rc
ReverseCirculator rc()
Definition
SimpleRandomAccessRangeFromPoint.h:368
DGtal::SimpleRandomAccessRangeFromPoint::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator< TConstIterator >))
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::ReverseOutputIterator
boost::reverse_iterator< Iterator > ReverseOutputIterator
Definition
SimpleRandomAccessRangeFromPoint.h:94
DGtal::SimpleRandomAccessRangeFromPoint::begin
Iterator begin(const Point &aPoint)
Definition
SimpleRandomAccessRangeFromPoint.h:215
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::myBegin
Iterator myBegin
Definition
SimpleRandomAccessRangeFromPoint.h:185
DGtal::SimpleRandomAccessRangeFromPoint::c
Circulator c()
Definition
SimpleRandomAccessRangeFromPoint.h:359
DGtal::SimpleRandomAccessRangeFromPoint::~SimpleRandomAccessRangeFromPoint
~SimpleRandomAccessRangeFromPoint()
Definition
SimpleRandomAccessRangeFromPoint.h:145
DGtal::SimpleRandomAccessRangeFromPoint::className
std::string className() const
Definition
SimpleRandomAccessRangeFromPoint.h:173
DGtal::SimpleRandomAccessRangeFromPoint::rc
ConstReverseCirculator rc() const
Definition
SimpleRandomAccessRangeFromPoint.h:386
DGtal::SimpleRandomAccessRangeFromPoint::rbegin
ConstReverseIterator rbegin(const Point &aPoint) const
Definition
SimpleRandomAccessRangeFromPoint.h:340
DGtal::SimpleRandomAccessRangeFromPoint::outputIterator
OutputIterator outputIterator(const Point &aPoint)
Definition
SimpleRandomAccessRangeFromPoint.h:272
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::ReverseCirculator
boost::reverse_iterator< Circulator > ReverseCirculator
Definition
SimpleRandomAccessRangeFromPoint.h:97
DGtal::SimpleRandomAccessRangeFromPoint::c
ConstCirculator c() const
Definition
SimpleRandomAccessRangeFromPoint.h:377
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::Circulator
DGtal::Circulator< Iterator > Circulator
Definition
SimpleRandomAccessRangeFromPoint.h:96
DGtal::SimpleRandomAccessRangeFromPoint::begin
ConstIterator begin(const Point &aPoint) const
Definition
SimpleRandomAccessRangeFromPoint.h:235
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::ConstReverseCirculator
boost::reverse_iterator< ConstCirculator > ConstReverseCirculator
Definition
SimpleRandomAccessRangeFromPoint.h:100
DGtal::SimpleRandomAccessRangeFromPoint::SimpleRandomAccessRangeFromPoint
SimpleRandomAccessRangeFromPoint(const SimpleRandomAccessRangeFromPoint &other)
Definition
SimpleRandomAccessRangeFromPoint.h:121
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::Point
DistanceFunctor::Point Point
Definition
SimpleRandomAccessRangeFromPoint.h:85
DGtal::SimpleRandomAccessRangeFromPoint::routputIterator
ReverseOutputIterator routputIterator(const Point &aPoint)
Definition
SimpleRandomAccessRangeFromPoint.h:291
DGtal::SimpleRandomAccessRangeFromPoint::end
ConstIterator end() const
Definition
SimpleRandomAccessRangeFromPoint.h:253
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::ReverseIterator
boost::reverse_iterator< Iterator > ReverseIterator
Definition
SimpleRandomAccessRangeFromPoint.h:90
DGtal::SimpleRandomAccessRangeFromPoint::SimpleRandomAccessRangeFromPoint
SimpleRandomAccessRangeFromPoint(const TIterator &itb, const TIterator &ite, const DistanceFunctor &aDistance)
Definition
SimpleRandomAccessRangeFromPoint.h:112
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::ConstCirculator
DGtal::Circulator< ConstIterator > ConstCirculator
Definition
SimpleRandomAccessRangeFromPoint.h:99
DGtal::SimpleRandomAccessRangeFromPoint::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator< TIterator >))
DGtal::SimpleRandomAccessRangeFromPoint::rend
ReverseIterator rend()
Definition
SimpleRandomAccessRangeFromPoint.h:320
DGtal::SimpleRandomAccessRangeFromPoint::rbegin
ReverseIterator rbegin()
Definition
SimpleRandomAccessRangeFromPoint.h:300
DGtal::SimpleRandomAccessRangeFromPoint::operator=
SimpleRandomAccessRangeFromPoint & operator=(const SimpleRandomAccessRangeFromPoint &other)
Definition
SimpleRandomAccessRangeFromPoint.h:130
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::ConstIterator
ConstIterator ConstIterator
Definition
SimpleRandomAccessRangeFromPoint.h:88
DGtal::SimpleRandomAccessRangeFromPoint< ConstIterator, Iterator, DistanceFunctor >::Iterator
Iterator Iterator
Definition
SimpleRandomAccessRangeFromPoint.h:87
DGtal::SimpleRandomAccessRangeFromPoint::routputIterator
ReverseOutputIterator routputIterator()
Definition
SimpleRandomAccessRangeFromPoint.h:281
DGtal::SimpleRandomAccessRangeFromPoint::end
Iterator end()
Definition
SimpleRandomAccessRangeFromPoint.h:244
DGtal::SimpleRandomAccessRangeFromPoint::rbegin
ConstReverseIterator rbegin() const
Definition
SimpleRandomAccessRangeFromPoint.h:330
DGtal::SimpleRandomAccessRangeFromPoint::outputIterator
OutputIterator outputIterator()
Definition
SimpleRandomAccessRangeFromPoint.h:262
DGtal::SimpleRandomAccessRangeFromPoint::rbegin
ReverseIterator rbegin(const Point &aPoint)
Definition
SimpleRandomAccessRangeFromPoint.h:310
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::Value
DGtal::IteratorCirculatorTraits::Value
IC::value_type Value
Definition
IteratorCirculatorTraits.h:303
boost::RandomAccessIterator
Go to http://www.sgi.com/tech/stl/RandomAccessIterator.html.
Definition
Boost.dox:44
boost::UnaryFunction
Go to http://www.sgi.com/tech/stl/UnaryFunction.html.
Definition
Boost.dox:73
aPoint
const Point aPoint(3, 4)
src
DGtal
base
SimpleRandomAccessRangeFromPoint.h
Generated on
for DGtal by
1.18.0