// (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_IGNORE_SKELETON_OARCHIVE_HPP | |
#define BOOST_MPI_DETAIL_IGNORE_SKELETON_OARCHIVE_HPP | |
#include <boost/serialization/pfto.hpp> | |
#include <boost/archive/detail/auto_link_archive.hpp> | |
#include <boost/archive/detail/common_oarchive.hpp> | |
#include <boost/archive/basic_archive.hpp> | |
#include <boost/archive/detail/oserializer.hpp> | |
#include <boost/serialization/collection_size_type.hpp> | |
#include <boost/serialization/array.hpp> | |
#include <boost/serialization/item_version_type.hpp> | |
namespace boost { namespace mpi { namespace detail { | |
template<class Archive> | |
class ignore_skeleton_oarchive | |
: public archive::detail::common_oarchive<Archive> | |
{ | |
public: | |
ignore_skeleton_oarchive() | |
: archive::detail::common_oarchive<Archive>(archive::no_header) | |
{ | |
} | |
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS | |
public: | |
#else | |
friend class archive::detail::interface_oarchive<Archive>; | |
friend class archive::save_access; | |
protected: | |
#endif | |
// intermediate level to support override of operators | |
// for templates in the absence of partial function | |
// template ordering | |
template<class T> | |
void save_override(T const& t, BOOST_PFTO int) | |
{ | |
archive::save(* this->This(), t); | |
} | |
#define BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(T) \ | |
void save_override(T const & , int) \ | |
{} | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::class_id_optional_type) | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::version_type) | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::library_version_type) | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::class_id_type) | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::class_id_reference_type) | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::object_id_type) | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::object_reference_type) | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::tracking_type) | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::class_name_type) | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(serialization::collection_size_type) | |
BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(serialization::item_version_type) | |
void save_override(std::string const & s, int) | |
{ | |
if (s.size()) | |
save_override(serialization::make_array(s.data(),s.size()),0); | |
} | |
#undef BOOST_ARCHIVE_IGNORE_IMPLEMENTATION | |
}; | |
} } } // end namespace boost::mpi::detail | |
#endif // BOOST_MPI_DETAIL_IGNORE_SKELETON_OARCHIVE_HPP |