// Copyright (C) 2004-2006 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_GRAPH_PARALLEL_DIJKSTRA_DETAIL_HPP | |
#define BOOST_GRAPH_PARALLEL_DIJKSTRA_DETAIL_HPP | |
#ifndef BOOST_GRAPH_USE_MPI | |
#error "Parallel BGL files should not be included unless <boost/graph/use_mpi.hpp> has been included" | |
#endif | |
#include <boost/property_map/property_map.hpp> | |
namespace boost { namespace graph { namespace distributed { namespace detail { | |
/********************************************************************** | |
* Dijkstra queue message data * | |
**********************************************************************/ | |
template<typename DistanceMap, typename PredecessorMap> | |
class dijkstra_msg_value | |
{ | |
typedef typename property_traits<DistanceMap>::value_type distance_type; | |
typedef typename property_traits<PredecessorMap>::value_type | |
predecessor_type; | |
public: | |
typedef std::pair<distance_type, predecessor_type> type; | |
static type create(distance_type dist, predecessor_type pred) | |
{ return std::make_pair(dist, pred); } | |
}; | |
template<typename DistanceMap> | |
class dijkstra_msg_value<DistanceMap, dummy_property_map> | |
{ | |
typedef typename property_traits<DistanceMap>::key_type vertex_descriptor; | |
public: | |
typedef typename property_traits<DistanceMap>::value_type type; | |
static type create(type dist, vertex_descriptor) { return dist; } | |
}; | |
/**********************************************************************/ | |
} } } } // end namespace boost::graph::distributed::detail | |
#endif // BOOST_GRAPH_PARALLEL_DIJKSTRA_DETAIL_HPP |