From 80983966157666edc0f0d6901e91968f5b4fac79 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Thu, 25 Oct 2018 11:43:29 +0200
Subject: [PATCH] Add generic copy of arrays (value_copy)

---
 src/utils/ArrayUtils.hpp | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/utils/ArrayUtils.hpp b/src/utils/ArrayUtils.hpp
index 734f0692b..6392eddd6 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
-- 
GitLab