76 #ifndef SLIP_CONTAINER_CAST_HPP
77 #define SLIP_CONTAINER_CAST_HPP
88 struct __container_iterator_cast
90 template<
typename Container1,
93 container_iterator_cast(Container1& container,
98 first = container.begin();
99 last = container.end();
104 struct __container_iterator_cast<std::random_access_iterator_tag>
106 template<
typename Container1,
109 container_iterator_cast(Container1& container,
113 first = container.begin();
114 last = container.end();
119 struct __container_iterator_cast<std::random_access_iterator2d_tag>
121 template<
typename Container1,
124 container_iterator_cast(Container1& container,
128 first = container.upper_left();
129 last = container.bottom_right();
134 struct __container_iterator_cast<std::random_access_iterator3d_tag>
136 template<
typename Container1,
139 container_iterator_cast(Container1& container,
143 first = container.front_upper_left();
144 last = container.back_bottom_right();
204 template<
typename Container,
typename _II>
207 typedef typename std::iterator_traits<_II>::iterator_category _Category;
208 __container_iterator_cast<_Category>::container_iterator_cast(cont,first,last);
218 struct __reverse_container_iterator_cast
220 template<
typename Container1,
223 reverse_container_iterator_cast(Container1& container,
228 first = container.rbegin();
229 last = container.rend();
234 struct __reverse_container_iterator_cast<std::random_access_iterator_tag>
236 template<
typename Container1,
239 reverse_container_iterator_cast(Container1& container,
243 first = container.rbegin();
244 last = container.rend();
249 struct __reverse_container_iterator_cast<std::random_access_iterator2d_tag>
251 template<
typename Container1,
254 reverse_container_iterator_cast(Container1& container,
259 first = container.bottom_right() - dp;
260 last = container.upper_left();
269 struct __reverse_container_iterator_cast<std::random_access_iterator3d_tag>
271 template<
typename Container1,
274 reverse_container_iterator_cast(Container1& container,
282 DPoint3d<int> dp(1,1,0);
283 first = container.back_bottom_right() - dp;
284 last = container.front_upper_left();
307 template<
typename Container,
typename _II>
310 typedef typename std::iterator_traits<_II>::iterator_category _Category;
311 __reverse_container_iterator_cast<_Category>::reverse_container_iterator_cast(cont,first,last);
321 struct __container_iterator_castR
323 template<
typename Container1,
326 container_iterator_castR(Container1& container,
331 first = container.rbegin();
332 last = container.rend();
337 struct __container_iterator_castR<std::random_access_iterator_tag>
339 template<
typename Container1,
342 container_iterator_castR(Container1& container,
346 first = container.rbegin();
347 last = container.rend();
352 struct __container_iterator_castR<std::random_access_iterator2d_tag>
354 template<
typename Container1,
357 container_iterator_castR(Container1& container,
362 first = container.bottom_right() - dp;
363 last = container.upper_left();
368 struct __container_iterator_castR<std::random_access_iterator3d_tag>
370 template<
typename Container1,
373 container_iterator_castR(Container1& container,
377 first = container.rfront_upper_left();
378 last = container.rback_bottom_right();
401 template<
typename Container,
typename _II>
404 typedef typename std::iterator_traits<_II>::iterator_category _Category;
405 __container_iterator_castR<_Category>::container_iterator_castR(cont,first,last);
410 #endif //CONTAINER_CAST_HPP
void container_cast(Container &cont, _II &first, _II &last)
Get the default iterators of a SLIP container.
Provides a class to modelize the difference of slip::Point2d.
Provides a class to modelize the difference of slip::Point3d.
void reverse_container_cast(Container &cont, _II &first, _II &last)
Get the reverse default iterators of a SLIP container.
void container_castR(Container &cont, _II &first, _II &last)
Get the reverse default iterators of a SLIP container.
Difference of Point2D class, specialization of DPoint<CoordType,DIM> with DIM = 2.