// 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 has been included" #endif #include #include #include namespace boost { template class two_bit_color_map > : public parallel::distributed_property_map > { typedef two_bit_color_map local_map; typedef parallel::distributed_property_map inherited; typedef local_property_map 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 inline two_bit_color_type get(two_bit_color_map > const& pm, typename property_traits::key_type key) { return get(pm.base(), key); } template inline void put(two_bit_color_map > const& pm, typename property_traits::key_type key, two_bit_color_type value) { put(pm.base(), key, value); } template class two_bit_color_map > : public parallel::distributed_property_map< ProcessGroup, GlobalMap, two_bit_color_map > { typedef two_bit_color_map local_map; typedef parallel::distributed_property_map inherited; typedef parallel::distributed_property_map 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 inline two_bit_color_type get(two_bit_color_map< parallel::distributed_property_map< ProcessGroup, GlobalMap, two_bit_color_map > > const& pm, typename property_traits::key_type key) { return get(pm.base(), key); } template inline void put(two_bit_color_map< parallel::distributed_property_map< ProcessGroup, GlobalMap, two_bit_color_map > > const& pm, typename property_traits::key_type key, two_bit_color_type value) { put(pm.base(), key, value); } } // end namespace boost #endif // BOOST_DISTRIBUTED_TWO_BIT_COLOR_MAP_HPP