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