| // Copyright 2005 The Trustees of Indiana University. |
| |
| // 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: Douglas Gregor |
| // Andrew Lumsdaine |
| |
| #ifndef BOOST_PARALLEL_BASIC_REDUCE_HPP |
| #define BOOST_PARALLEL_BASIC_REDUCE_HPP |
| |
| #ifndef BOOST_GRAPH_USE_MPI |
| #error "Parallel BGL files should not be included unless <boost/graph/use_mpi.hpp> has been included" |
| #endif |
| |
| namespace boost { namespace parallel { |
| |
| /** Reduction operation used to reconcile differences between local |
| * and remote values for a particular key in a property map. The |
| * type @c T is typically the @c value_type of the property |
| * map. This basic reduction returns a default-constructed @c T as |
| * the default value and always resolves to the remote value. |
| */ |
| template<typename T> |
| struct basic_reduce |
| { |
| BOOST_STATIC_CONSTANT(bool, non_default_resolver = false); |
| |
| /// Returns a default-constructed T object |
| template<typename Key> |
| T operator()(const Key&) const { return T(); } |
| |
| /// Returns the remote value |
| template<typename Key> |
| const T& operator()(const Key&, const T&, const T& remote) const |
| { return remote; } |
| }; |
| |
| } } // end namespace boost::parallel |
| |
| #endif // BOOST_PARALLEL_BASIC_REDUCE_HPP |