DGtal
0.6.devel
Main Page
Related Pages
Modules
Namespaces
Data Structures
Examples
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
src
DGtal
base
ConstRangeFromPointAdapter.h
1
17
#pragma once
18
34
#if defined(ConstRangeFromPointAdapter_RECURSES)
35
#error Recursive header files inclusion detected in ConstRangeFromPointAdapter.h
36
#else // defined(ConstRangeFromPointAdapter_RECURSES)
37
38
#define ConstRangeFromPointAdapter_RECURSES
39
40
#if !defined ConstRangeFromPointAdapter_h
41
42
#define ConstRangeFromPointAdapter_h
43
45
// Inclusions
46
#include "DGtal/base/BasicFunctors.h"
47
#include "DGtal/base/Circulator.h"
48
#include "DGtal/base/CConstBidirectionalRangeFromPoint.h"
49
#include "DGtal/base/ConstIteratorAdapter.h"
50
#include "boost/concept_check.hpp"
52
53
namespace
DGtal
54
{
55
56
58
// class ConstRangeFromPointAdapter
60
84
template
<
typename
TRange,
typename
TFunctor,
typename
TReturnType>
85
class
ConstRangeFromPointAdapter
86
{
87
88
BOOST_CONCEPT_ASSERT
((
CConstBidirectionalRangeFromPoint<TRange>
));
89
90
// ------------------------- inner types --------------------------------
91
public
:
92
93
typedef
typename
TRange::Point
Point
;
94
typedef
ConstIteratorAdapter<typename TRange::ConstIterator,TFunctor,TReturnType>
ConstIterator
;
95
typedef
std::reverse_iterator<ConstIterator>
ConstReverseIterator
;
96
97
// ------------------------- standard services --------------------------------
98
105
ConstRangeFromPointAdapter
(
const
TRange& aRange,
106
const
TFunctor& aFunctor )
107
:
myRangePtr
(&aRange),
myFunctorPtr
(&aFunctor) {}
108
113
ConstRangeFromPointAdapter
(
const
ConstRangeFromPointAdapter
& other )
114
:
myRangePtr
(other.
myRangePtr
),
myFunctorPtr
(other.
myFunctorPtr
) {}
115
121
ConstRangeFromPointAdapter
&
operator=
(
const
ConstRangeFromPointAdapter
& other )
122
{
123
if
(
this
!= &other )
124
{
125
myRangePtr
= other.
myRangePtr
;
126
myFunctorPtr
= other.
myFunctorPtr
;
127
}
128
return
*
this
;
129
}
130
134
~ConstRangeFromPointAdapter
() {}
135
140
bool
isValid
()
const
{
return
true
; }
141
142
143
// ------------------------- private data --------------------------------
144
private
:
148
const
TRange*
myRangePtr
;
152
const
TFunctor*
myFunctorPtr
;
153
154
// ------------------------- iterator services --------------------------------
155
public
:
156
161
ConstIterator
begin
()
const
{
162
return
ConstIterator
(
myRangePtr
->begin(), *
myFunctorPtr
);
163
}
164
169
ConstIterator
begin
(
const
Point
& aPoint)
const
{
170
return
ConstIterator
(
myRangePtr
->begin(aPoint), *
myFunctorPtr
);
171
}
172
177
ConstIterator
end
()
const
{
178
return
ConstIterator
(
myRangePtr
->end(), *
myFunctorPtr
);
179
}
180
185
ConstReverseIterator
rbegin
()
const
{
186
return
ConstReverseIterator
(this->
end
());
187
}
188
193
ConstReverseIterator
rbegin
(
const
Point
& aPoint)
const
{
194
ConstIterator
it(
myRangePtr
->begin(aPoint), *
myFunctorPtr
);
195
if
( it != this->
end
() ) ++it;
196
return
ConstReverseIterator
( it );
197
}
198
203
ConstReverseIterator
rend
()
const
{
204
return
ConstReverseIterator
(this->
begin
());
205
}
206
207
208
};
//end class ConstRangeFromPointAdapter
209
210
}
// namespace DGtal
211
213
214
215
#endif // !defined ConstRangeFromPointAdapter_h
216
217
#undef ConstRangeFromPointAdapter_RECURSES
218
#endif // else defined(ConstRangeFromPointAdapter_RECURSES)
Generated on Wed Dec 19 2012 19:10:21 for DGtal by
1.8.1.1