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