From f8f210993fe199c40df63827c8b1ae0257b02753 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Wed, 29 Oct 2025 18:24:21 +0100 Subject: Dangling changes from today --- lib/c++/iterator.hpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'lib/c++/iterator.hpp') diff --git a/lib/c++/iterator.hpp b/lib/c++/iterator.hpp index 78babff..866543a 100644 --- a/lib/c++/iterator.hpp +++ b/lib/c++/iterator.hpp @@ -14,6 +14,42 @@ void iterate_over(Func&& func, const saw::data>& } return; } + +/** + * + */ +template +struct iterator { +private: + template + static void iterate_over_i(Func& func, + const saw::data>& start, + const saw::data>& end, + const saw::data>& dist, + saw::data>& iter + ){ + static_assert(i <= D, "Eh. Too tired to think of a good message"); + if constexpr ( i == D ){ + func(iter); + }else{ + for(iter.at({i}) = start.at({i})+dist.at({i}); (iter.at({i})+dist.at({i}) < end.at({i})); ++iter.at({i})){ + iterate_over_i(func,start,end,dist,iter); + } + } + } +public: + template + static void apply( + Func&& func, + const saw::data>& start, + const saw::data>& end, + const saw::data>& dist = {} + ){ + saw::data> iter; + iterate_over_i<0u,Func>(func, start, end, dist, iter); + } +}; + /* Ambiguous template void iterate_over(Func&& func, const saw::data>& start, const saw::data>& end, const saw::data>& dist = {{{0u,0u,0u}}}){ -- cgit v1.2.3