WIP: rank array member function implementations
This commit is contained in:
parent
97f28975d5
commit
fae345f455
1 changed files with 27 additions and 10 deletions
|
@ -72,30 +72,42 @@ namespace CNORXZ
|
||||||
template <class... Indices>
|
template <class... Indices>
|
||||||
T RCArray<T>::operator[](const SPack<Indices...>& pack) const
|
T RCArray<T>::operator[](const SPack<Indices...>& pack) const
|
||||||
{
|
{
|
||||||
CXZ_ERROR("not implemented");
|
typedef typename std::remove_reference<decltype(*pack[CSizeT<0>{}])>::type I0;
|
||||||
return T();
|
if constexpr(is_rank_index<I0>::value){
|
||||||
|
return *(begin() + pack.lex());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return (*mA)[pack];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
template <class... Indices>
|
template <class... Indices>
|
||||||
T RCArray<T>::at(const SPack<Indices...>& pack) const
|
T RCArray<T>::at(const SPack<Indices...>& pack) const
|
||||||
{
|
{
|
||||||
CXZ_ERROR("not implemented");
|
typedef typename std::remove_reference<decltype(*pack[CSizeT<0>{}])>::type I0;
|
||||||
return T();
|
if constexpr(is_rank_index<I0>::value){
|
||||||
|
CXZ_ASSERT(pack[CSizeT<0>{}]->rank() == getNumRanks(),
|
||||||
|
"rank number out of scope");
|
||||||
|
return *(begin() + pack.lex());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return mA->at(pack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T RCArray<T>::operator[](const DPack& pack) const
|
T RCArray<T>::operator[](const DPack& pack) const
|
||||||
{
|
{
|
||||||
CXZ_ERROR("not implemented");
|
// TODO: assert that none of the indices is rank index
|
||||||
return T();
|
return (*mA)[pack];
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T RCArray<T>::at(const DPack& pack) const
|
T RCArray<T>::at(const DPack& pack) const
|
||||||
{
|
{
|
||||||
CXZ_ERROR("not implemented");
|
// TODO: assert that none of the indices is rank index
|
||||||
return T();
|
return mA->at(pack);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
@ -103,8 +115,13 @@ namespace CNORXZ
|
||||||
Sptr<CArrayBase<T>> RCArray<T>::sl(const IndexInterface<I,M>& begin,
|
Sptr<CArrayBase<T>> RCArray<T>::sl(const IndexInterface<I,M>& begin,
|
||||||
const IndexInterface<I,M>& end) const
|
const IndexInterface<I,M>& end) const
|
||||||
{
|
{
|
||||||
CXZ_ERROR("not implemented");
|
if constexpr(is_rank_index<I>::value){
|
||||||
return nullptr;
|
CXZ_ERROR("not implemented");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return mA->sl(begin, end);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|
Loading…
Reference in a new issue