117 lines
4.1 KiB
Plaintext
117 lines
4.1 KiB
Plaintext
// Copyright (C) 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
|
|
// Jeremiah Willcock
|
|
// Andrew Lumsdaine
|
|
|
|
// Distributed version of the two-bit color map
|
|
#ifndef BOOST_DISTRIBUTED_TWO_BIT_COLOR_MAP_HPP
|
|
#define BOOST_DISTRIBUTED_TWO_BIT_COLOR_MAP_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/graph/two_bit_color_map.hpp>
|
|
#include <boost/property_map/parallel/distributed_property_map.hpp>
|
|
#include <boost/property_map/parallel/local_property_map.hpp>
|
|
|
|
namespace boost {
|
|
|
|
template<typename ProcessGroup, typename GlobalMap, typename StorageMap>
|
|
class two_bit_color_map<local_property_map<ProcessGroup,GlobalMap,StorageMap> >
|
|
: public parallel::distributed_property_map<ProcessGroup, GlobalMap,
|
|
two_bit_color_map<StorageMap> >
|
|
{
|
|
typedef two_bit_color_map<StorageMap> local_map;
|
|
|
|
typedef parallel::distributed_property_map<ProcessGroup, GlobalMap,
|
|
local_map >
|
|
inherited;
|
|
|
|
typedef local_property_map<ProcessGroup, GlobalMap, StorageMap>
|
|
index_map_type;
|
|
|
|
public:
|
|
two_bit_color_map(std::size_t inital_size,
|
|
const index_map_type& index = index_map_type())
|
|
: inherited(index.process_group(), index.global(),
|
|
local_map(inital_size, index.base())) { }
|
|
|
|
inherited& base() { return *this; }
|
|
const inherited& base() const { return *this; }
|
|
};
|
|
|
|
template<typename ProcessGroup, typename GlobalMap, typename StorageMap>
|
|
inline two_bit_color_type
|
|
get(two_bit_color_map<local_property_map<ProcessGroup,GlobalMap,StorageMap> >
|
|
const& pm,
|
|
typename property_traits<GlobalMap>::key_type key)
|
|
{
|
|
return get(pm.base(), key);
|
|
}
|
|
|
|
template<typename ProcessGroup, typename GlobalMap, typename StorageMap>
|
|
inline void
|
|
put(two_bit_color_map<local_property_map<ProcessGroup,GlobalMap,StorageMap> >
|
|
const& pm,
|
|
typename property_traits<GlobalMap>::key_type key,
|
|
two_bit_color_type value)
|
|
{
|
|
put(pm.base(), key, value);
|
|
}
|
|
|
|
template<typename ProcessGroup, typename GlobalMap, typename StorageMap>
|
|
class two_bit_color_map<parallel::distributed_property_map<
|
|
ProcessGroup, GlobalMap, StorageMap> >
|
|
: public parallel::distributed_property_map<
|
|
ProcessGroup, GlobalMap, two_bit_color_map<StorageMap> >
|
|
{
|
|
typedef two_bit_color_map<StorageMap> local_map;
|
|
|
|
typedef parallel::distributed_property_map<ProcessGroup,GlobalMap,local_map>
|
|
inherited;
|
|
|
|
typedef parallel::distributed_property_map<ProcessGroup, GlobalMap,
|
|
StorageMap>
|
|
index_map_type;
|
|
|
|
public:
|
|
two_bit_color_map(std::size_t inital_size,
|
|
const index_map_type& index = index_map_type())
|
|
: inherited(index.process_group(), index.global(),
|
|
local_map(inital_size, index.base())) { }
|
|
|
|
inherited& base() { return *this; }
|
|
const inherited& base() const { return *this; }
|
|
};
|
|
|
|
template<typename ProcessGroup, typename GlobalMap, typename StorageMap>
|
|
inline two_bit_color_type
|
|
get(two_bit_color_map<
|
|
parallel::distributed_property_map<
|
|
ProcessGroup, GlobalMap, two_bit_color_map<StorageMap> > > const& pm,
|
|
typename property_traits<GlobalMap>::key_type key)
|
|
{
|
|
return get(pm.base(), key);
|
|
}
|
|
|
|
template<typename ProcessGroup, typename GlobalMap, typename StorageMap>
|
|
inline void
|
|
put(two_bit_color_map<
|
|
parallel::distributed_property_map<
|
|
ProcessGroup, GlobalMap, two_bit_color_map<StorageMap> > > const& pm,
|
|
typename property_traits<GlobalMap>::key_type key,
|
|
two_bit_color_type value)
|
|
{
|
|
put(pm.base(), key, value);
|
|
}
|
|
|
|
} // end namespace boost
|
|
|
|
#endif // BOOST_DISTRIBUTED_TWO_BIT_COLOR_MAP_HPP
|