annotate DEPENDENCIES/generic/include/boost/mpi/detail/forward_skeleton_iarchive.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 // (C) Copyright 2005 Matthias Troyer
Chris@16 2
Chris@16 3 // Use, modification and distribution is subject to the Boost Software
Chris@16 4 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
Chris@16 5 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 6
Chris@16 7 // Authors: Matthias Troyer
Chris@16 8
Chris@16 9 #ifndef BOOST_MPI_DETAIL_FORWARD_SKELETON_IARCHIVE_HPP
Chris@16 10 #define BOOST_MPI_DETAIL_FORWARD_SKELETON_IARCHIVE_HPP
Chris@16 11
Chris@16 12 #include <boost/serialization/pfto.hpp>
Chris@16 13
Chris@16 14 #include <boost/archive/detail/auto_link_archive.hpp>
Chris@16 15 #include <boost/archive/detail/iserializer.hpp>
Chris@16 16 #include <boost/archive/detail/interface_iarchive.hpp>
Chris@16 17 #include <boost/archive/detail/common_iarchive.hpp>
Chris@16 18 #include <boost/serialization/collection_size_type.hpp>
Chris@16 19
Chris@16 20 namespace boost { namespace mpi { namespace detail {
Chris@16 21
Chris@16 22 template<class Archive, class ImplementationArchive>
Chris@16 23 class forward_skeleton_iarchive
Chris@16 24 : public archive::detail::common_iarchive<Archive>
Chris@16 25 {
Chris@16 26 public:
Chris@16 27
Chris@16 28 typedef ImplementationArchive implementation_archive_type;
Chris@16 29
Chris@16 30 forward_skeleton_iarchive(implementation_archive_type& ar)
Chris@16 31 : archive::detail::common_iarchive<Archive>(archive::no_header),
Chris@16 32 implementation_archive(ar)
Chris@16 33 {
Chris@16 34 }
Chris@16 35
Chris@16 36 #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
Chris@16 37 public:
Chris@16 38 #else
Chris@16 39 friend class archive::detail::interface_iarchive<Archive>;
Chris@16 40 friend class archive::load_access;
Chris@16 41 protected:
Chris@16 42 #endif
Chris@16 43
Chris@16 44 // intermediate level to support override of operators
Chris@16 45 // for templates in the absence of partial function
Chris@16 46 // template ordering
Chris@16 47 template<class T>
Chris@16 48 void load_override(T & t, BOOST_PFTO int)
Chris@16 49 {
Chris@16 50 archive::load(* this->This(), t);
Chris@16 51 }
Chris@16 52
Chris@16 53 #define BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(T) \
Chris@16 54 void load_override(T & t , int) \
Chris@16 55 { \
Chris@16 56 implementation_archive >> t; \
Chris@16 57 }
Chris@16 58
Chris@16 59 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::class_id_optional_type)
Chris@16 60 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::version_type)
Chris@16 61 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::class_id_type)
Chris@16 62 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::class_id_reference_type)
Chris@16 63 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::object_id_type)
Chris@16 64 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::object_reference_type)
Chris@16 65 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::tracking_type)
Chris@16 66 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::class_name_type)
Chris@16 67 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(serialization::collection_size_type)
Chris@16 68
Chris@16 69 void load_override(std::string & s , int)
Chris@16 70 {
Chris@16 71 serialization::collection_size_type length(s.size());
Chris@16 72 load_override(length,0);
Chris@16 73 s.resize(length);
Chris@16 74 }
Chris@16 75
Chris@16 76 #undef BOOST_ARCHIVE_FORWARD_IMPLEMENTATION
Chris@16 77 protected:
Chris@16 78 /// the actual archive used to serialize the information we actually want to store
Chris@16 79 implementation_archive_type& implementation_archive;
Chris@16 80 };
Chris@16 81
Chris@16 82
Chris@16 83 } } } // end namespace boost::mpi::detail
Chris@16 84
Chris@16 85 #endif // BOOST_MPI_DETAIL_FORWARD_SKELETON_IARCHIVE_HPP