diff --git a/libs/util/include/psemek/util/array.hpp b/libs/util/include/psemek/util/array.hpp index d58a0e76..bd221a2c 100644 --- a/libs/util/include/psemek/util/array.hpp +++ b/libs/util/include/psemek/util/array.hpp @@ -376,6 +376,21 @@ namespace psemek::util data_ = std::move(data); } + template + void mirror(array & a, std::size_t i) + { + assert(i < N); + + auto const s = a.dim(i); + for (auto idx : a.indices()) + { + auto jdx = idx; + jdx[i] = s - 1 - jdx[i]; + if (jdx[i] < idx[i]) + std::swap(a(idx), a(jdx)); + } + } + template auto map(F && f, array const & a) {