1 #ifndef TIL_BASIC_RANGE_H 2 #define TIL_BASIC_RANGE_H 17 template <
typename TIterator >
25 typedef typename TIterator::pointer
pointer;
27 basic_range(TIterator begin, TIterator end) : m_i(begin), m_end(end) {}
34 bool ok()
const {
return m_i != m_end; }
52 template <
typename TIterator, std::
size_t D >
68 Vector &
size() {
return m_size; }
70 template <
typename TPosIterator >
71 void from_pos(TIterator begin, TPosIterator pbegin, TPosIterator pend)
74 std::advance(*
this,
pos2offset(pbegin, pend, m_size.begin()));
89 template <
typename TIterator, std::
size_t D >
96 typedef typename Base::Vector
Vector;
105 { this->from_pos(pos.
begin(), pos.
end()); }
107 template <
typename TPosIterator >
108 void from_pos(TPosIterator pbegin, TPosIterator pend)
109 { this->from_pos(m_begin, pbegin, pend); }
numeric_array< std::size_t, D > Vector
TIterator::value_type value_type
TIterator::reference reference
inner_basic_volumetric_iterator(TIterator i, const Vector &size)
Belongs to package Box Do not include directly, include til/Box.h instead.
numeric_array< T, D > size(const Box< T, D > &box)
Return the size of a box.
Defines empty classes that serves as labels.
TIterator::pointer pointer
basic_volumetric_iterator(TIterator begin, const Vector &size)
std::size_t pos2offset(TPIterator pbegin, TPIterator pend, TSIterator sbegin)
basic_range(TIterator begin, TIterator end)
detail::inner_basic_volumetric_iterator< TIterator, D > Base
void from_pos(TPosIterator pbegin, TPosIterator pend)
void from_pos(TIterator begin, TPosIterator pbegin, TPosIterator pend)
A simple range made out of a couple of iterators.
void from_pos(const Vector &pos)