12#ifndef __cxz_index_base_h__
13#define __cxz_index_base_h__
46 template <
class I,
typename MetaType>
54 I&
THIS() {
return static_cast<I&
>(*this); }
57 const I&
THIS()
const {
return static_cast<const I&
>(*this); }
105 decltype(
auto)
id()
const {
return THIS().id(); }
138 decltype(
auto)
operator*()
const {
return THIS().operator*(); }
158 decltype(
auto)
meta()
const {
return THIS().meta(); }
191 template <
class Xpr,
class F = NoF>
193 {
return THIS().ifor(
xpr,std::forward<F>(
f)); }
216 template <
class I,
typename MetaType>
219 template <
class I,
typename MetaType>
223 template <
class I,
typename MetaType>
226 template <
class I,
typename MetaType>
decltype(auto) meta() const
Int operator-(const IndexInterface &i) const
RangePtr prange(const IndexInterface &end) const
bool operator<(const IndexInterface &i) const
I & reformat(const Vector< SizeT > &f, const Vector< SizeT > &s)
bool formatIsTrivial() const
String stringMeta() const
bool operator!=(const IndexInterface &i) const
~IndexInterface()=default
decltype(auto) deepFormat() const
decltype(auto) ifor(const Xpr &xpr, F &&f) const
decltype(auto) range() const
bool operator>=(const IndexInterface &i) const
bool operator>(const IndexInterface &i) const
decltype(auto) stepSize(const IndexId< J > &id) const
decltype(auto) deepMax() const
bool operator==(const IndexInterface &i) const
bool operator<=(const IndexInterface &i) const
I & at(const MetaType &meta)
Special function objects declarations.
Index ID type declarations.
constexpr decltype(auto) operator+(const COpInterface< Op1 > &op1, const COpInterface< Op2 > &op2)
Sptr< I > moveToPtr(I &&i)
Sptr< RangeBase > RangePtr
IndexPtr< I, MetaType > & operator--(const IndexPtr< I, MetaType > &i)
std::vector< T, Allocator< T > > Vector
constexpr decltype(auto) operator-(const COpInterface< Op > &op)
IndexPtr< I, MetaType > & operator++(const IndexPtr< I, MetaType > &i)
decltype(auto) xpr(const Sptr< I > &i)
Sptr< Range > rangeCast(const RangePtr r)
Sptr< IndexInterface< I, MetaType > > IndexPtr
std::shared_ptr< T > Sptr
Xpression base declarations.