include prange + fix corresponding compile errors (untested)
This commit is contained in:
parent
2d4d0b8ee9
commit
0e1ec2e95a
5 changed files with 24 additions and 14 deletions
|
@ -164,6 +164,14 @@ namespace CNORXZ
|
||||||
template <typename Meta>
|
template <typename Meta>
|
||||||
class UIndex;
|
class UIndex;
|
||||||
|
|
||||||
|
// definition: ranges/prange.h
|
||||||
|
template <class Range>
|
||||||
|
class PRange;
|
||||||
|
|
||||||
|
// definition: ranges/prange.h
|
||||||
|
template <class Index>
|
||||||
|
class PIndex;
|
||||||
|
|
||||||
// definition: ranges/crange.h
|
// definition: ranges/crange.h
|
||||||
class CRange; // classic range, trivial meta data
|
class CRange; // classic range, trivial meta data
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,9 @@ namespace CNORXZ
|
||||||
|
|
||||||
template <class Index>
|
template <class Index>
|
||||||
PIndex<Index>::PIndex(const RangePtr& range, SizeT pos) :
|
PIndex<Index>::PIndex(const RangePtr& range, SizeT pos) :
|
||||||
IndexInterface<Index>(pos),
|
IndexInterface<Index,typename Index::MetaType>(pos),
|
||||||
mRangePtr(rangeCast<RangeType>(range)),
|
mRangePtr(rangeCast<RangeType>(range)),
|
||||||
mIndex(mRangePtr->orig(),mRangePtr->parts()[pos])
|
mOrig(mRangePtr->orig(),mRangePtr->parts()[pos])
|
||||||
{}
|
{}
|
||||||
|
|
||||||
template <class Index>
|
template <class Index>
|
||||||
|
@ -106,7 +106,7 @@ namespace CNORXZ
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Index>
|
template <class Index>
|
||||||
Sptr<RangeType> PIndex<Index>::range() const
|
Sptr<typename PIndex<Index>::RangeType> PIndex<Index>::range() const
|
||||||
{
|
{
|
||||||
return mRangePtr;
|
return mRangePtr;
|
||||||
}
|
}
|
||||||
|
@ -130,13 +130,13 @@ namespace CNORXZ
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Index>
|
template <class Index>
|
||||||
const MetaT& PIndex<Index>::meta() const
|
const typename PIndex<Index>::MetaType& PIndex<Index>::meta() const
|
||||||
{
|
{
|
||||||
return mOrig->meta();
|
return mOrig->meta();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Index>
|
template <class Index>
|
||||||
PIndex& PIndex<Index>::at(const MetaT& metaPos)
|
PIndex<Index>& PIndex<Index>::at(const MetaType& metaPos)
|
||||||
{
|
{
|
||||||
mOrig->at(metaPos);
|
mOrig->at(metaPos);
|
||||||
mkPos();
|
mkPos();
|
||||||
|
@ -178,7 +178,7 @@ namespace CNORXZ
|
||||||
template <class Index>
|
template <class Index>
|
||||||
PIndex<Index>& PIndex<Index>::operator()()
|
PIndex<Index>& PIndex<Index>::operator()()
|
||||||
{
|
{
|
||||||
mkPos()
|
mkPos();
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,11 +201,13 @@ namespace CNORXZ
|
||||||
IB::mPos = 0;
|
IB::mPos = 0;
|
||||||
for(const auto& x: mRangePtr->parts()){
|
for(const auto& x: mRangePtr->parts()){
|
||||||
if(x == opos){
|
if(x == opos){
|
||||||
return *this;
|
return;
|
||||||
}
|
}
|
||||||
++IB::mPos;
|
++IB::mPos;
|
||||||
}
|
}
|
||||||
CXZ_ERROR("meta position '" << metaPos << "' not part of range");
|
CXZ_ERROR("meta position '" << mOrig->meta() << "' not part of range");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace CNORXZ
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef public IndexInterface<Index,typename Index::MetaType> IB;
|
typedef IndexInterface<Index,typename Index::MetaType> IB;
|
||||||
typedef PRange<typename Index::RangeType> RangeType;
|
typedef PRange<typename Index::RangeType> RangeType;
|
||||||
typedef typename Index::MetaType MetaType;
|
typedef typename Index::MetaType MetaType;
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ namespace CNORXZ
|
||||||
UPos lmax() const;
|
UPos lmax() const;
|
||||||
IndexId<0> id() const;
|
IndexId<0> id() const;
|
||||||
|
|
||||||
const MetaT& operator*() const;
|
const MetaType& operator*() const;
|
||||||
|
|
||||||
SizeT dim() const;
|
SizeT dim() const;
|
||||||
Sptr<RangeType> range() const;
|
Sptr<RangeType> range() const;
|
||||||
|
@ -43,8 +43,8 @@ namespace CNORXZ
|
||||||
UPos stepSize(const IndexId<I>& id) const;
|
UPos stepSize(const IndexId<I>& id) const;
|
||||||
|
|
||||||
String stringMeta() const;
|
String stringMeta() const;
|
||||||
const MetaT& meta() const;
|
const MetaType& meta() const;
|
||||||
PIndex& at(const MetaT& metaPos);
|
PIndex& at(const MetaType& metaPos);
|
||||||
decltype(auto) xpr(const Sptr<PIndex<Index>>& _this) const;
|
decltype(auto) xpr(const Sptr<PIndex<Index>>& _this) const;
|
||||||
|
|
||||||
template <class I>
|
template <class I>
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "xindex.cc.h"
|
#include "xindex.cc.h"
|
||||||
#include "urange.cc.h"
|
#include "urange.cc.h"
|
||||||
#include "crange.cc.h"
|
#include "crange.cc.h"
|
||||||
|
#include "prange.cc.h"
|
||||||
#include "dindex.cc.h"
|
#include "dindex.cc.h"
|
||||||
#include "lindex.cc.h"
|
#include "lindex.cc.h"
|
||||||
#include "index_mul.cc.h"
|
#include "index_mul.cc.h"
|
||||||
|
|
|
@ -3,8 +3,7 @@
|
||||||
#include "index_base.h"
|
#include "index_base.h"
|
||||||
#include "mrange.h"
|
#include "mrange.h"
|
||||||
#include "crange.h"
|
#include "crange.h"
|
||||||
//#include "subrange.h"
|
#include "prange.h"
|
||||||
//#include "value_range.h"
|
|
||||||
#include "xindex.h"
|
#include "xindex.h"
|
||||||
#include "yrange.h"
|
#include "yrange.h"
|
||||||
#include "dindex.h"
|
#include "dindex.h"
|
||||||
|
|
Loading…
Reference in a new issue