// -*- C++ -*- #ifndef __single_range_h__ #define __single_range_h__ #include #include #include "base_def.h" #include "index_base.h" #include "range_base.h" namespace MultiArrayTools { template class SingleIndex : public IndexBase > { public: DEFAULT_MEMBERS(SingleIndex); virtual size_t size() const override; virtual SingleIndexBase& operator=(size_t pos) override; virtual SingleIndexBase& operator=(const U& upos); virtual const U& getMetaPos() const; virtual size_t dim() const override; // = 1 virtual void linkTo(IndefinitIndexBase* target) override; protected: virtual size_t evaluate(const Index& in) const override; }; template class SingleRange : public RangeBase > { public: DEFAULT_MEMBERS(SingleRange); const U& get(size_t pos) const; size_t get(const U& metaPos) const; protected: std::vector mSpace; }; } #include "single_range.cc" #endif