CNORXZ
Container with Native Operation Routines and Expressions
Loading...
Searching...
No Matches
eindex.h
Go to the documentation of this file.
1// -*- C++ -*-
12#ifndef __cxz_eindex_h__
13#define __cxz_eindex_h__
14
15#include "base/base.h"
16#include "ranges/index_base.h"
17#include "ranges/range_base.h"
18#include "xpr/xpr.h"
19
20namespace CNORXZ
21{
33 template <typename MetaT, SizeT S, SizeT L>
34 class EIndex : public LIndex<SIndex<MetaT,S>,L>
35 {
36 public:
37 typedef typename LIndex<SIndex<MetaT,S>,L>::IB IB;
39
42
49 template <class Xpr, class F>
50 decltype(auto) ifor(const Xpr& xpr, F&& f) const;
51
52 private:
54 };
55
60 template <typename MetaT, SizeT S, SizeT L>
62 {
63 static constexpr bool value = true;
64 };
65
70 template <typename MetaT, SizeT S, SizeT L>
72 {
73 static constexpr bool value = true;
74 };
75
78 template <typename MetaT, SizeT S, SizeT L, class I1>
79 decltype(auto) operator*(const Sptr<EIndex<MetaT,S,L>>& a, const Sptr<I1>& b);
80
83 template <typename MetaT, SizeT S, SizeT L>
84 decltype(auto) eindexPtr(const Sptr<LIndex<SIndex<MetaT,S>,L>>& i);
85
89 template <SizeT L, typename MetaT, SizeT S>
90 decltype(auto) eindexPtr(const Sptr<SIndex<MetaT,S>>& i);
91
95 template <typename MetaT, SizeT S, SizeT L>
96 decltype(auto) eindexPtr(const Sptr<SIndex<MetaT,S>>& i, CSizeT<L> l);
97
104 template <SizeT S, SizeT L1, SizeT L2, class Index>
105 decltype(auto) eplex(const Sptr<Index>& i);
106
112 template <class Index, SizeT S, SizeT L>
113 decltype(auto) eplex(const Sptr<Index>& i, CSizeT<S> s, CSizeT<L> l);
114
121 template <class Index, SizeT S, SizeT L1, SizeT L2>
122 decltype(auto) eplex(const Sptr<Index>& i, CSizeT<S> s, CSizeT<L1> l1, CSizeT<L2> l2);
123
124}
125
126#endif
basic headers
EIndex(const Sptr< LIndex< SIndex< MetaT, S >, L > > &i)
Definition eindex.cc.h:23
DEFAULT_MEMBERS(EIndex)
LIndex< SIndex< MetaT, S >, L >::IB IB
Definition eindex.h:37
LIndex< SIndex< MetaT, S >, L >::RangeType RangeType
Definition eindex.h:38
decltype(auto) ifor(const Xpr &xpr, F &&f) const
Definition eindex.cc.h:30
Index base declaration.
decltype(auto) eindexPtr(const Sptr< LIndex< SIndex< MetaT, S >, L > > &i)
Definition eindex.cc.h:42
decltype(auto) eplex(const Sptr< Index > &i)
Definition eindex.cc.h:60
decltype(auto) xpr(const Sptr< I > &i)
std::integral_constant< SizeT, N > CSizeT
Definition types.h:81
Sptr< Range > rangeCast(const RangePtr r)
std::shared_ptr< T > Sptr
Definition types.h:48
RangeBase declaration.
static constexpr bool value
static constexpr bool value
Xpression main header.