1#ifndef BOOST_SERIALIZATION_VALARAY_HPP
2#define BOOST_SERIALIZATION_VALARAY_HPP
3
4// MS compatible compilers support #pragma once
5#if defined(_MSC_VER)
6# pragma once
7#endif
8
9/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
10// valarray.hpp: serialization for stl vector templates
11
12// (C) Copyright 2005 Matthias Troyer .
13// Use, modification and distribution is subject to the Boost Software
14// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
15// http://www.boost.org/LICENSE_1_0.txt)
16
17// See http://www.boost.org for updates, documentation, and revision history.
18
19#include <valarray>
20#include <boost/config.hpp>
21#include <boost/serialization/split_free.hpp>
22#include <boost/serialization/array.hpp>
23#include <boost/serialization/collection_size_type.hpp>
24#include <boost/serialization/detail/get_data.hpp>
25
26// function specializations must be defined in the appropriate
27// namespace - boost::serialization
28#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
29#define STD _STLP_STD
30#else
31#define STD std
32#endif
33
34namespace boost {
35namespace serialization {
36
37/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
38// valarray< T >
39
40template<class Archive, class U>
41void save( Archive & ar, const STD::valarray<U> &t, const unsigned int /*file_version*/ )
42{
43 const collection_size_type count(t.size());
44 ar << BOOST_SERIALIZATION_NVP(count);
45 if (t.size())
46 ar << make_array(detail::get_data(t), t.size());
47}
48
49template<class Archive, class U>
50void load( Archive & ar, STD::valarray<U> &t, const unsigned int /*file_version*/ )
51{
52 collection_size_type count;
53 ar >> BOOST_SERIALIZATION_NVP(count);
54 t.resize(count);
55 if (t.size())
56 ar >> make_array(detail::get_data(t), t.size());
57}
58
59// split non-intrusive serialization function member into separate
60// non intrusive save/load member functions
61template<class Archive, class U>
62inline void serialize( Archive & ar, STD::valarray<U> & t, const unsigned int file_version)
63{
64 boost::serialization::split_free(ar, t, file_version);
65}
66
67} } // end namespace boost::serialization
68
69#include <boost/serialization/collection_traits.hpp>
70
71BOOST_SERIALIZATION_COLLECTION_TRAITS(STD::valarray)
72#undef STD
73
74#endif // BOOST_SERIALIZATION_VALARAY_HPP
75

source code of boost/boost/serialization/valarray.hpp