diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2023-04-09 23:29:00 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2023-04-09 23:29:00 +0100 |
commit | b6b3944e9507f337f77a72ea44b5c0ccba7a2c01 (patch) | |
tree | a487df54853522f973ed987006e787117804b9eb /lib/collections.hpp | |
parent | Swap messy glmvec wrapper for OpenMesh Point/Normal with real glm::vec and a ... (diff) | |
parent | Move remaining split/plane functions to use library (diff) | |
download | ilt-b6b3944e9507f337f77a72ea44b5c0ccba7a2c01.tar.bz2 ilt-b6b3944e9507f337f77a72ea44b5c0ccba7a2c01.tar.xz ilt-b6b3944e9507f337f77a72ea44b5c0ccba7a2c01.zip |
Merge branch 'model-factory-textures'
Diffstat (limited to 'lib/collections.hpp')
-rw-r--r-- | lib/collections.hpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/collections.hpp b/lib/collections.hpp index 16870be..59cec6f 100644 --- a/lib/collections.hpp +++ b/lib/collections.hpp @@ -92,11 +92,11 @@ operator+(const std::vector<T...> & in, Vn && vn) return out; } -template<template<typename> typename Direction = std::plus> +template<template<typename> typename Direction = std::plus, typename T = unsigned int> [[nodiscard]] static auto -vectorOfN(std::integral auto N, unsigned int start = {}, unsigned int step = 1) +vectorOfN(std::integral auto N, T start = {}, T step = 1) { - std::vector<unsigned int> v; + std::vector<T> v; v.resize(N); std::generate_n(v.begin(), N, [&start, step, adj = Direction {}]() { return std::exchange(start, adj(start, step)); @@ -117,3 +117,18 @@ materializeRange(const std::pair<In, In> & in) { return Rtn(in.first, in.second); } + +template<typename T> struct pair_range { + constexpr auto & + begin() const noexcept + { + return pair.first; + } + constexpr auto & + end() const noexcept + { + return pair.second; + } + const std::pair<T, T> & pair; +}; +template<typename T> pair_range(std::pair<T, T>) -> pair_range<T>; |