1 //  Copyright (c) 2017 Christopher Taylor
2 //
3 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
4 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5 //
6 #ifndef __HPXVALARRAY_H__
7 #define __HPXVALARRAY_H__
8 
9 #include <hpx/config.hpp>
10 #include <hpx/runtime/serialization/serialize.hpp>
11 #include <hpx/traits/is_bitwise_serializable.hpp>
12 #include <hpx/include/components.hpp>
13 
14 #include <cstddef>
15 #include <valarray>
16 
17 namespace hpx { namespace serialization
18 {
19     template<typename T>
serialize(hpx::serialization::input_archive & ar,std::valarray<T> & arr,int)20     void serialize(hpx::serialization::input_archive &ar,
21         std::valarray<T> &arr, int /* version */)
22     {
23 
24         std::size_t sz = 0;
25         ar & sz;
26         arr.resize(sz);
27 
28         if(sz < 1) return;
29 
30         for(std::size_t i = 0; i < sz; ++i)
31            ar >> arr[i];
32     }
33 
34     template<typename T>
serialize(hpx::serialization::output_archive & ar,const std::valarray<T> & arr,int)35     void serialize(hpx::serialization::output_archive &ar,
36         const std::valarray<T> &arr, int /* version */)
37     {
38 
39         const std::size_t sz = arr.size();
40         ar & sz;
41         for(auto v : arr)
42           ar << v;
43     }
44 
45 }}
46 
47 #endif
48 
49