Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/pending/property_serialize.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DEPENDENCIES/generic/include/boost/pending/property_serialize.hpp Tue Aug 05 11:11:38 2014 +0100 @@ -0,0 +1,70 @@ +// (C) Copyright Jeremy Siek 2006 +// Distributed under 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) + +#ifndef BOOST_PROPERTY_SERIALIZE_HPP +#define BOOST_PROPERTY_SERIALIZE_HPP + +#include <boost/pending/property.hpp> +#ifdef BOOST_GRAPH_USE_MPI +#include <boost/mpi/datatype.hpp> +#include <boost/serialization/is_bitwise_serializable.hpp> +#endif // BOOST_GRAPH_USE_MPI + +#include <boost/serialization/base_object.hpp> +#include <boost/serialization/nvp.hpp> + +namespace boost { + template<class Archive> + inline void serialize(Archive&, no_property&, const unsigned int) { } + + template<class Archive, class Tag, class T, class Base> + void + serialize(Archive& ar, property<Tag, T, Base>& prop, + const unsigned int /*version*/) + { + ar & serialization::make_nvp( "property_value" , prop.m_value ); + ar & serialization::make_nvp( "property_base" , prop.m_base ); + } + +#ifdef BOOST_GRAPH_USE_MPI + namespace mpi { + template<typename Tag, typename T, typename Base> + struct is_mpi_datatype<property<Tag, T, Base> > + : mpl::and_<is_mpi_datatype<T>, + is_mpi_datatype<Base> > { }; + } + + namespace serialization { + template<typename Tag, typename T, typename Base> + struct is_bitwise_serializable<property<Tag, T, Base> > + : mpl::and_<is_bitwise_serializable<T>, + is_bitwise_serializable<Base> > { }; + + template<typename Tag, typename T, typename Base> + struct implementation_level<property<Tag, T, Base> > + : mpl::int_<object_serializable> {} ; + + template<typename Tag, typename T, typename Base> + struct tracking_level<property<Tag, T, Base> > + : mpl::int_<track_never> {} ; + + } +#endif // BOOST_GRAPH_USE_MPI + +} // end namespace boost + +#ifdef BOOST_GRAPH_USE_MPI +namespace boost { namespace mpi { + template<> + struct is_mpi_datatype<boost::no_property> : mpl::true_ { }; + +} } // end namespace boost::mpi + +BOOST_IS_BITWISE_SERIALIZABLE(boost::no_property) +BOOST_CLASS_IMPLEMENTATION(boost::no_property,object_serializable) +BOOST_CLASS_TRACKING(boost::no_property,track_never) +#endif // BOOST_GRAPH_USE_MPI + +#endif // BOOST_PROPERTY_SERIALIZE_HPP