18#ifndef __cxz_mrange_h__
19#define __cxz_mrange_h__
39 Tuple<typename Indices::MetaType...> >
47 static constexpr SizeT NI =
sizeof...(Indices);
112 constexpr decltype(
auto)
pmax()
const;
115 constexpr decltype(
auto)
lmax()
const;
155 template <
class Xpr,
class F>
156 constexpr decltype(
auto)
ifor(
const Xpr&
xpr,
F&&
f)
const;
177 const auto&
format()
const;
204 template <SizeT I,
class Xpr,
class F>
205 constexpr decltype(
auto) mkIFor(
const Xpr&
xpr,
F&&
f)
const;
210 LexFormatT mLexFormat;
213 typedef RemoveRef<
decltype(mkLMax(mIPack))> LMaxT;
215 typedef RemoveRef<
decltype(mkPMax(mIPack,mFormat))> PMaxT;
249 {
static constexpr bool value =
true; };
257 {
static constexpr bool value =
true; };
265 {
static constexpr bool value =
true; };
313 template <
class...
Ranges>
331 virtual void make()
override final;
341 template <
class...
Ranges>
348 static constexpr SizeT NR =
sizeof...(Ranges);
GMIndex & setFormat(const FormatT &bs)
bool formatIsTrivial() const
MetaType operator*() const
decltype(auto) xpr(const Sptr< MIndex< Indices... > > &_this) const
constexpr decltype(auto) pmax() const
constexpr decltype(auto) lmax() const
Tuple< typename Indices::MetaType... > MetaType
constexpr GMIndex(GMIndex &&i)=default
constexpr GMIndex()=default
RangePtr prange(const GMIndex< FormatT, Indices... > &last) const
GMIndex & operator-=(Int n)
GMIndex & reformat(const Vector< SizeT > &f, const Vector< SizeT > &s)
const SPack< Indices... > & pack() const
static constexpr SizeT NI
GMIndex operator-(Int n) const
GMIndex operator+(Int n) const
IndexInterface< GMIndex< FormatT, Indices... >, Tuple< typename Indices::MetaType... > > IB
constexpr SizeT dim() const
String stringMeta() const
GMIndex & at(const MetaType &metaPos)
Sptr< RangeType > range() const
constexpr GMIndex & operator=(GMIndex &&i)=default
decltype(auto) stepSize(const IndexId< I > &id) const
MRange< typename Indices::RangeType... > RangeType
GMIndex & operator+=(Int n)
constexpr decltype(auto) ifor(const Xpr &xpr, F &&f) const
INDEX_RANDOM_ACCESS_ITERATOR_DEFS(MetaType)
const auto & lexFormat() const
const auto & format() const
MIndex< typename Ranges::IndexType... > IndexType
virtual RangePtr extend(const RangePtr &r) const override final
virtual String stringMeta(SizeT pos) const override final
virtual SizeT size() const override final
static constexpr SizeT NR
virtual const TypeInfo & metaType() const override final
SizeT getMeta(const MetaType &metaPos) const
decltype(auto) space() const
Tuple< Sptr< Ranges >... > mRs
virtual const TypeInfo & type() const override final
virtual Vector< Uuid > key() const override final
const MetaType get(SizeT pos) const
virtual SizeT dim() const override final
virtual MArray< RangePtr > sub() const override final
Tuple< typename Ranges::IndexType::MetaType... > MetaType
typename MkIsq< B, E >::type Isqr
constexpr decltype(auto) gmindexPtr(const FormatT &bs, const SPack< Indices... > &pack)
typename std::remove_reference< T >::type RemoveRef
constexpr decltype(auto) mindex(const Sptr< Indices > &... is)
Sptr< RangeBase > RangePtr
std::vector< T, Allocator< T > > Vector
RangePtr mrange(const Sptr< Ranges > &... rs)
Sptr< Range > rangeCast(const RangePtr r)
std::index_sequence< Is... > Isq
constexpr decltype(auto) mindexPtr(const SPack< Indices... > &pack)
std::shared_ptr< T > Sptr
static constexpr bool value
static constexpr bool value
static constexpr SizeT value
static constexpr SizeT value
static constexpr bool value
static constexpr bool value
static constexpr bool value