3 #include <boost/range/mutable_iterator.hpp> 4 #include <boost/range/const_iterator.hpp> 5 #include <boost/iterator/iterator_facade.hpp> 22 template <
template <
typename>
class Container_,
typename Value_>
23 class Iterator :
public boost::iterator_facade <
24 Iterator<Container_, Value_>,
26 std::bidirectional_iterator_tag,
30 using Dimension =
typename Container_<Value_>::Dimension;
37 Iterator(Container_<Value_> *container, Dimension position) :
38 container_(container),
42 template<
template <
typename>
class Container_2_>
44 container_(iterator.container_),
45 position_(iterator.position_)
51 template <
template <
typename> class ,
typename >
friend class ConstIterator;
53 Value_ &dereference()
const 55 return (*container_)[*position_];
58 template<
template <
typename>
class Container_2_>
61 return this->position_ == iterator.position_ && this->container_ == iterator.container_;
74 Container_<Value_> *container_;
82 template <
template <
typename>
class Container_,
85 ConstIterator<Container_, Value_>,
86 Container_<Value_> const,
87 std::bidirectional_iterator_tag,
91 using Dimension =
typename Container_<Value_>::Dimension;
98 ConstIterator(Container_<Value_>
const* container, Dimension position) :
99 container_(container),
103 template<
template <
typename>
class Container_2_>
105 container_(iterator.container_),
106 position_(iterator.position_)
111 friend class boost::iterator_core_access;
112 template <
template <
typename> class ,
typename >
friend class Iterator;
114 Value_
const& dereference()
const 116 return (*container_)[*position_];
119 template<
template <
typename>
class Container_2_>
122 return this->position_ == iterator.position_ && this->container_ == iterator.container_;
135 Container_<Value_>
const* container_;
143 template <
template <
typename>
class Container_,
template <
typename>
class SubContainer_,
typename Value_>
145 SubIterator<Container_, SubContainer_, Value_>,
147 std::bidirectional_iterator_tag,
148 SubContainer_<Value_> &
151 using Dimension =
typename Container_<Value_>::Dimension;
159 container_(container),
163 template<
template <
typename>
class Container_2_>
165 container_(iterator.container_),
166 position_(iterator.position_)
171 friend class boost::iterator_core_access;
172 template <
template <
typename>
class,
template <
typename>
class,
typename >
friend class ConstSubIterator;
174 SubContainer_<Value_> &dereference()
const 176 return (*container_)[*position_];
179 template<
template <
typename>
class Container_2_>
182 return this->position_ == iterator.position_ && this->container_ == iterator.container_;
195 Container_<Value_> *container_;
203 template <
template <
typename>
class Container_,
template <
typename>
class SubContainer_,
typename Value_>
205 ConstSubIterator<Container_, SubContainer_, Value_>,
206 Container_<Value_> const,
207 std::bidirectional_iterator_tag,
208 SubContainer_<Value_> const&
211 using Dimension =
typename Container_<Value_>::Dimension;
219 container_(container),
223 template<
template <
typename>
class Container_2_>
225 container_(iterator.container_),
226 position_(iterator.position_)
231 friend class boost::iterator_core_access;
232 template <
template <
typename>
class,
template <
typename>
class,
typename >
friend class SubIterator;
234 SubContainer_<Value_>
const& dereference()
const 236 return (*container_)[*position_];
239 template<
template <
typename>
class Container_2_>
242 return this->position_ == iterator.position_ && this->container_ == iterator.container_;
255 Container_<Value_>
const* container_;
ConstIterator(Container_< Value_ > const *container, Dimension position)
Definition: Iterator.hh:98
ConstIterator()
Definition: Iterator.hh:93
Const sub-iterator.
Definition: Iterator.hh:204
ConstSubIterator()
Definition: Iterator.hh:213
Iterator(Iterator< Container_2_, Value_ > const &iterator)
Definition: Iterator.hh:43
const iterator
Definition: Iterator.hh:84
ConstIterator(ConstIterator< Container_2_, Value_ > const &iterator)
Definition: Iterator.hh:104
SubIterator()
Definition: Iterator.hh:153
SubIterator(Container_< Value_ > *container, Dimension position)
Definition: Iterator.hh:158
ConstSubIterator(Container_< Value_ > const *container, Dimension position)
Definition: Iterator.hh:218
friend class boost::iterator_core_access
Definition: Iterator.hh:50
Iterator(Container_< Value_ > *container, Dimension position)
Definition: Iterator.hh:37
Iterator()
Definition: Iterator.hh:32
SubIterator(SubIterator< Container_2_, SubContainer_, Value_ > const &iterator)
Definition: Iterator.hh:164
Boosted Collider Analysis.
Definition: Analysis.hh:15
Iterator
Definition: Iterator.hh:144
Iterator
Definition: Iterator.hh:23
ConstSubIterator(ConstSubIterator< Container_2_, SubContainer_, Value_ > const &iterator)
Definition: Iterator.hh:224