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_IGNORE_OPRIMITIVE_HPP
|
Chris@16
|
10 #define BOOST_MPI_DETAIL_IGNORE_OPRIMITIVE_HPP
|
Chris@16
|
11
|
Chris@16
|
12 #include <boost/config.hpp>
|
Chris@16
|
13 #include <boost/mpi/datatype.hpp>
|
Chris@16
|
14 #include <boost/serialization/array.hpp>
|
Chris@16
|
15
|
Chris@16
|
16 namespace boost { namespace mpi { namespace detail {
|
Chris@16
|
17
|
Chris@16
|
18 /// @brief a minimal output archive, which ignores any save
|
Chris@16
|
19 ///
|
Chris@16
|
20 /// This class implements a minimal output archive, probably an output archive
|
Chris@16
|
21 /// archetype, doing nothing at any save. It's use, besides acting as an
|
Chris@16
|
22 /// archetype is as a base class to implement special archives that ignore
|
Chris@16
|
23 /// saving of most types
|
Chris@16
|
24
|
Chris@16
|
25 class ignore_oprimitive
|
Chris@16
|
26 {
|
Chris@16
|
27 public:
|
Chris@16
|
28 /// a trivial default constructor
|
Chris@16
|
29 ignore_oprimitive()
|
Chris@16
|
30 {}
|
Chris@16
|
31
|
Chris@16
|
32 /// don't do anything when saving binary data
|
Chris@16
|
33 void save_binary(const void *, std::size_t )
|
Chris@16
|
34 {
|
Chris@16
|
35 }
|
Chris@16
|
36
|
Chris@16
|
37 /// don't do anything when saving arrays
|
Chris@16
|
38 template<class T>
|
Chris@16
|
39 void save_array(serialization::array<T> const&, unsigned int )
|
Chris@16
|
40 {
|
Chris@16
|
41 }
|
Chris@16
|
42
|
Chris@16
|
43 typedef is_mpi_datatype<mpl::_1> use_array_optimization;
|
Chris@16
|
44
|
Chris@16
|
45
|
Chris@16
|
46 #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
Chris@16
|
47 friend class archive::save_access;
|
Chris@16
|
48 protected:
|
Chris@16
|
49 #else
|
Chris@16
|
50 public:
|
Chris@16
|
51 #endif
|
Chris@16
|
52
|
Chris@16
|
53 /// don't do anything when saving primitive types
|
Chris@16
|
54 template<class T>
|
Chris@16
|
55 void save(const T &)
|
Chris@16
|
56 {
|
Chris@16
|
57 }
|
Chris@16
|
58 };
|
Chris@16
|
59
|
Chris@16
|
60 } } } // end namespace boost::mpi::detail
|
Chris@16
|
61
|
Chris@16
|
62 #endif // BOOST_MPI_DETAIL_IGNORE_OPRIMITIVE_HPP
|