diff --git a/include/pit/iters.h b/include/pit/iters.h index e69de29..cf23dda 100644 --- a/include/pit/iters.h +++ b/include/pit/iters.h @@ -0,0 +1,57 @@ +#include +namespace pit{ + template + class passthrough{ + T underlying; + public: + passthrough(T underlying): underlying(underlying){} + passthrough(passthrough& from): underlying(from.underlying){} + passthrough operator+(std::size_t amount){ + return passthrough(this->underlying+amount); + } + void operator+=(std::size_t amount){ + this->underlying += amount; + } + passthrough operator-(std::size_t amount){ + return passthrough(this->underlying-amount); + } + void operator-=(std::size_t amount){ + this->underlying -= amount; + } + T const& operator*(){ + return this->underlying; + } + bool operator==(passthrough const& rhs){ + return this->underlying == rhs.underlying; + } + }; + template + class range{ + private: + T beginning; + T ending; + public: + range(T begin, T end):beginning(begin), ending(end){} + passthrough begin(){ + return passthrough(this->beginning); + } + passthrough end(){ + return passthrough(this->ending); + } + }; + + template + class repeat{ + T val; + public: + // noops + repeat operator+(std::size_t ){} + repeat operator-(std::size_t ){} + void operator+=(std::size_t ){} + void operator-=(std::size_t ){} + bool operator==(repeat const& rhs){return true;} + T const& operator*(){ + return this->val; + } + }; +} diff --git a/include/pit/manipulators.h b/include/pit/manipulators.h deleted file mode 100644 index e69de29..0000000