123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- // 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
|