79 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			79 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								// (C) Copyright 2005 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)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//  Authors: Matthias Troyer
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_MPI_DETAIL_FORWARD_SKELETON_OARCHIVE_HPP
							 | 
						||
| 
								 | 
							
								#define BOOST_MPI_DETAIL_FORWARD_SKELETON_OARCHIVE_HPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <boost/archive/detail/auto_link_archive.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/archive/detail/oserializer.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/archive/detail/interface_oarchive.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/archive/detail/common_oarchive.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/serialization/collection_size_type.hpp>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost { namespace mpi { namespace detail {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template<class Archive, class ImplementationArchive>
							 | 
						||
| 
								 | 
							
								class forward_skeleton_oarchive 
							 | 
						||
| 
								 | 
							
								  : public archive::detail::common_oarchive<Archive>
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								public:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    typedef ImplementationArchive implementation_archive_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    forward_skeleton_oarchive(implementation_archive_type& ar) 
							 | 
						||
| 
								 | 
							
								      : archive::detail::common_oarchive<Archive>(archive::no_header),
							 | 
						||
| 
								 | 
							
								        implementation_archive(ar)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
							 | 
						||
| 
								 | 
							
								public:
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								    friend class archive::detail::interface_oarchive<Archive>;
							 | 
						||
| 
								 | 
							
								    friend class archive::save_access;
							 | 
						||
| 
								 | 
							
								protected:
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  template<class T>
							 | 
						||
| 
								 | 
							
								  void save_override(T const& t)
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    archive::save(* this->This(), t);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(T) \
							 | 
						||
| 
								 | 
							
								    void save_override(T const & t)             \
							 | 
						||
| 
								 | 
							
								    {                                           \
							 | 
						||
| 
								 | 
							
								      implementation_archive << t;              \
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::class_id_optional_type)
							 | 
						||
| 
								 | 
							
								BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::version_type)
							 | 
						||
| 
								 | 
							
								BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::class_id_type)
							 | 
						||
| 
								 | 
							
								BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::class_id_reference_type)
							 | 
						||
| 
								 | 
							
								BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::object_id_type)
							 | 
						||
| 
								 | 
							
								BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::object_reference_type)
							 | 
						||
| 
								 | 
							
								BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::tracking_type)
							 | 
						||
| 
								 | 
							
								BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::class_name_type)
							 | 
						||
| 
								 | 
							
								BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(serialization::collection_size_type)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    void save_override(std::string const & t)    
							 | 
						||
| 
								 | 
							
								    {                                          
							 | 
						||
| 
								 | 
							
								      save_override(serialization::collection_size_type(t.size()));       
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#undef BOOST_ARCHIVE_FORWARD_IMPLEMENTATION
							 | 
						||
| 
								 | 
							
								protected:
							 | 
						||
| 
								 | 
							
								    /// the actual archive used to serialize the information we actually want to store
							 | 
						||
| 
								 | 
							
								    implementation_archive_type& implementation_archive;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} } } // end namespace boost::mpi::detail
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // BOOST_MPI_DETAIL_FORWARD_SKELETON_OARCHIVE_HPP
							 |