From a77d58d94648f967a5951fb0e38eb6d945c770c3 Mon Sep 17 00:00:00 2001 From: Christian Zimmermann Date: Fri, 24 Mar 2017 15:05:02 +0100 Subject: [PATCH] added single range specialization --- src/single_range.cc | 35 +++++++++++++++++++++++++++++++++++ src/single_range.h | 24 ++++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/src/single_range.cc b/src/single_range.cc index e215bc7..19c29ff 100644 --- a/src/single_range.cc +++ b/src/single_range.cc @@ -96,6 +96,41 @@ namespace MultiArrayTools // + SingleRange::SingleRange(size_t ext) : + RangeBase >(), + mExt(ext) {} + + size_t SingleRange::get(size_t pos) const + { + return pos; + } + + size_t SingleRange::getMeta(size_t metaPos) const + { + return metaPos; + } + + size_t SingleRange::size() const + { + return mExt; + } + + MultiRangeType SingleRange::type() const + { + return MultiRangeType(RangeType::SPACE); + } + + SingleIndex SingleRange::begin() const + { + return SingleIndex(this, 0); + } + + SingleIndex SingleRange::end() const + { + return SingleIndex(this, size()); + } + + // SingleRange::SingleRange(size_t num) : RangeBase >(), diff --git a/src/single_range.h b/src/single_range.h index 9151dda..8971e2e 100644 --- a/src/single_range.h +++ b/src/single_range.h @@ -112,6 +112,30 @@ namespace MultiArrayTools size_t mExt; }; + template <> + class SingleRange : public RangeBase > + { + public: + typedef typename RangeBase >::IndexType IndexType; + + DEFAULT_MEMBERS(SingleRange); + + SingleRange(size_t ext); + + virtual size_t size() const override; + + size_t get(size_t pos) const; + size_t getMeta(size_t metaPos) const; + + virtual MultiRangeType type() const override; + + SingleIndex begin() const override; + SingleIndex end() const override; + + protected: + size_t mExt; + }; + template <> class SingleRange : public RangeBase > {