1 // Copyright (C) 2006 The Trustees of Indiana University. 2 3 // Use, modification and distribution is subject to the Boost Software 4 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt) 6 7 // Authors: Douglas Gregor 8 // Andrew Lumsdaine 9 #ifndef BOOST_GRAPH_DISTRIBUTED_SELECTOR_HPP 10 #define BOOST_GRAPH_DISTRIBUTED_SELECTOR_HPP 11 12 #ifndef BOOST_GRAPH_USE_MPI 13 #error "Parallel BGL files should not be included unless <boost/graph/use_mpi.hpp> has been included" 14 #endif 15 16 #include <boost/graph/detail/is_distributed_selector.hpp> 17 18 namespace boost { 19 20 /* The default local selector for a distributedS selector. */ 21 struct defaultS {}; 22 23 /** 24 * Selector that specifies that the graph should be distributed 25 * among different processes organized based on the given process 26 * group. 27 */ 28 template<typename ProcessGroup, typename LocalS = defaultS, 29 typename DistributionS = defaultS> 30 struct distributedS 31 { 32 typedef ProcessGroup process_group_type; 33 typedef LocalS local_selector; 34 typedef DistributionS distribution; 35 }; 36 37 namespace detail { 38 template<typename ProcessGroup, typename LocalS, typename DistributionS> 39 struct is_distributed_selector<distributedS<ProcessGroup, LocalS, DistributionS> >: mpl::true_ {}; 40 } 41 42 } 43 44 #endif // BOOST_GRAPH_DISTRIBUTED_SELECTOR_HPP 45