#ifndef BOOST_SERIALIZATION_COMPLEX_HPP #define BOOST_SERIALIZATION_COMPLEX_HPP // MS compatible compilers support #pragma once #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma once #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // serialization/utility.hpp: // serialization for stl utility templates // (C) Copyright 2007 Matthias Troyer . // Use, modification and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for updates, documentation, and revision history. #include #include #include #include namespace boost { namespace serialization { template inline void serialize( Archive & ar, std::complex & t, const unsigned int file_version ) { boost::serialization::split_free(ar, t, file_version); } template inline void save( Archive & ar, std::complex const& x, const unsigned int /* file_version */ ) { double re=x.real(); double im=x.imag(); ar << boost::serialization::make_nvp("real", re); ar << boost::serialization::make_nvp("imag", im); } template inline void load( Archive & ar, std::complex& x, const unsigned int /* file_version */ ) { double re; double im; ar >> boost::serialization::make_nvp("real", re); ar >> boost::serialization::make_nvp("imag", im); x = std::complex(re,im); } /// specialization of serialization traits for complex template struct is_bitwise_serializable > : public is_bitwise_serializable {}; template struct implementation_level > : mpl::int_ {} ; // treat complex just like builtin arithmetic types for tracking template struct tracking_level > : mpl::int_ {} ; } // serialization } // namespace boost #endif // BOOST_SERIALIZATION_COMPLEX_HPP