Go to the documentation of this file. 1 #ifndef GfxTL__ARRAY_HEADER__
2 #define GfxTL__ARRAY_HEADER__
9 template <
unsigned int DimT,
class IteratorT>
13 ArrayAccessor(IteratorT arr,
const size_t* fac) : m_arr(arr), m_fac(fac)
20 return ArrayAccessor<DimT - 1, IteratorT>(m_arr + i * (*m_fac), m_fac + 1);
26 return ArrayAccessor<DimT - 1, IteratorT>(m_arr + i * (*m_fac), m_fac + 1);
38 return m_arr + *(m_fac - 1);
46 template <
class IteratorT>
50 typedef typename std::iterator_traits<IteratorT>::value_type
value_type;
51 typedef typename std::iterator_traits<IteratorT>::reference
reference;
53 ArrayAccessor(IteratorT arr,
const size_t* fac) : m_arr(arr), m_fac(fac)
72 return m_arr + *(m_fac - 1);
80 template <
unsigned int DimT,
class IteratorT>
84 typedef typename std::iterator_traits<IteratorT>::value_type
value_type;
87 template <
unsigned int D>
92 for (
unsigned int i = 0; i < DimT; ++i)
98 Array(IteratorT arr,
const size_t* ext) : m_arr(arr)
106 for (
unsigned int i = 0; i < DimT; ++i)
111 for (
unsigned int i = DimT - 1; i != 0; --i)
113 m_fac[i - 1] = m_fac[i] * m_ext[i];
126 return ArrayAccessor<DimT - 1, IteratorT>(m_arr + i * m_fac[0], m_fac + 1);
132 return ArrayAccessor<DimT - 1, IteratorT>(m_arr + i * m_fac[0], m_fac + 1);
156 return m_arr + m_fac[0] * m_ext[0];
168 return m_arr + m_fac[0] * m_ext[0];
187 template <
unsigned int DimT,
class IteratorT>
192 for (
size_t i = 0; i <
a.Extent(0); ++i)
194 o <<
Array<DimT - 1, IteratorT>(
a.m_arr +
a.m_fac[0] * i,
a.m_ext + 1);
195 if (i <
a.Extent(0) - 1)
204 template <
class IteratorT>
209 for (
size_t i = 0; i <
a.Extent(0); ++i)
212 if (i <
a.Extent(0) - 1)
reference operator[](size_t i) const
Array< DimT, IteratorT > ThisType
std::iterator_traits< IteratorT >::value_type value_type
friend std::ostream & operator<<(std::ostream &o, const Array< D, IteratorT > &a)
const ArrayAccessor< DimT - 1, IteratorT > operator[](size_t i) const
ArrayAccessor(IteratorT arr, const size_t *fac)
ArrayAccessor< DimT - 1, IteratorT > operator[](size_t i)
std::iterator_traits< IteratorT >::value_type value_type
std::iterator_traits< IteratorT >::reference reference
const ArrayAccessor< DimT - 1, IteratorT > operator[](size_t i) const
double a(double t, double a0, double j)
std::ostream & operator<<(std::ostream &o, const Array< DimT, IteratorT > &a)
const size_t * Extent() const
ArrayAccessor< DimT - 1, IteratorT > operator[](size_t i)
Array(IteratorT arr, const size_t *ext)
void SetExtent(const size_t *ext)
ArrayAccessor(IteratorT arr, const size_t *fac)
void Iterator(iterator i)
const size_t Extent(unsigned int d) const