diff --git a/src/utils/ArrayUtils.hpp b/src/utils/ArrayUtils.hpp index 734f0692bd23b6f48c719b462a02be0f02c90da2..6392eddd630bf4e22ce613348051aac93ff6c217 100644 --- a/src/utils/ArrayUtils.hpp +++ b/src/utils/ArrayUtils.hpp @@ -155,4 +155,23 @@ class Sum ~Sum() = default; }; +template <template <typename ...SourceT> typename SourceArray, + template <typename ...ImageT> typename ImageArray, + typename ...SourceT, typename ...ImageT> +void value_copy(const SourceArray<SourceT...>& source_array, + ImageArray<ImageT...>& image_array) +{ + using SourceDataType = typename SourceArray<SourceT...>::data_type; + using ImageDataType = typename ImageArray<ImageT...>::data_type; + + static_assert(std::is_same_v<std::remove_const_t<SourceDataType>,ImageDataType>); + static_assert(not std::is_const_v<ImageDataType>); + + Assert(source_array.size() == image_array.size()); + + parallel_for(source_array.size(), PASTIS_LAMBDA(const size_t& i) { + image_array[i] = source_array[i]; + }); +} + #endif //ARRAY_UTILS_HPP