12#ifndef __cxz_array_base_h__
13#define __cxz_array_base_h__
53 template <
typename I,
typename M>
62 template <
typename I,
typename M>
70 template <
class... Indices>
79 template <
class... Indices>
91 const T&
at(
const DPack& pack)
const;
99 template <
typename I,
typename M>
107 template <
class Index>
114 template <
class... Indices>
115 inline decltype(
auto)
operator()(
const SPack<Indices...>& pack)
const;
120 inline decltype(
auto)
operator()(
const DPack& pack)
const;
123 virtual const T*
data()
const = 0;
188 template <
typename T>
196 using CAB::operator[];
197 using CAB::operator();
214 template <
typename I,
typename M>
219 template <
typename I,
typename M>
224 template <
class... Indices>
229 template <
class... Indices>
242 template <
class Index>
247 template <
class... Indices>
248 inline decltype(
auto)
operator()(
const SPack<Indices...>& pack);
252 inline decltype(
auto)
operator()(
const DPack& pack);
256 template <
typename I,
typename M>
Sptr< ArrayBase< T > > sl(const IndexInterface< I, M > &begin, const IndexInterface< I, M > &end)
iterator itLex(const Acc &acc)
OpRoot< T, Index > operator()(const Sptr< Index > &i)
T & operator[](const IndexInterface< I, M > &i)
DEFAULT_MEMBERS(ArrayBase)
ArrayBase(const RangePtr &range)
CAB::const_iterator const_iterator
T & at(const IndexInterface< I, M > &i)
iterator itLexSave(const Acc &acc)
AIndex< T > const_iterator
COpRoot< T, Index > operator()(const Sptr< Index > &i) const
virtual bool formatIsTrivial() const =0
CArrayBase(const RangePtr &range)
virtual const_iterator cbegin() const =0
virtual RangePtr range() const
const T & operator[](const IndexInterface< I, M > &i) const
virtual const_iterator begin() const
virtual const_iterator cend() const =0
Sptr< CArrayBase< T > > sl(const IndexInterface< I, M > &begin, const IndexInterface< I, M > &end) const
virtual bool isView() const =0
virtual const T * data() const =0
DEFAULT_MEMBERS(CArrayBase)
const T & at(const IndexInterface< I, M > &i) const
const_iterator itLex(const Acc &acc) const
void checkFormatCompatibility(const Acc &acc) const
const_iterator itLexSave(const Acc &acc) const
virtual ~CArrayBase()=default
virtual const_iterator end() const
virtual SizeT size() const
Sptr< RangeBase > RangePtr
std::shared_ptr< T > Sptr
Operation types declarations.