Added boost header
This commit is contained in:
148
test/external/boost/graph/distributed/adjlist/handlers.hpp
vendored
Normal file
148
test/external/boost/graph/distributed/adjlist/handlers.hpp
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
// Copyright (C) 2007 Douglas Gregor
|
||||
|
||||
// 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)
|
||||
|
||||
// This file contains code for the distributed adjacency list's
|
||||
// message handlers. It should not be included directly by users.
|
||||
|
||||
#ifndef BOOST_GRAPH_DISTRIBUTED_ADJLIST_HANDLERS_HPP
|
||||
#define BOOST_GRAPH_DISTRIBUTED_ADJLIST_HANDLERS_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/parallel/simple_trigger.hpp>
|
||||
#include <boost/graph/parallel/detail/untracked_pair.hpp>
|
||||
|
||||
namespace boost {
|
||||
|
||||
template<PBGL_DISTRIB_ADJLIST_TEMPLATE_PARMS>
|
||||
void
|
||||
PBGL_DISTRIB_ADJLIST_TYPE::
|
||||
setup_triggers()
|
||||
{
|
||||
using boost::graph::parallel::simple_trigger;
|
||||
|
||||
simple_trigger(process_group_, msg_add_vertex_with_property, this,
|
||||
&adjacency_list::handle_add_vertex_with_property);
|
||||
simple_trigger(process_group_, msg_add_vertex_with_property_and_reply, this,
|
||||
&adjacency_list::handle_add_vertex_with_property_and_reply);
|
||||
simple_trigger(process_group_, msg_add_edge, this,
|
||||
&adjacency_list::handle_add_edge);
|
||||
simple_trigger(process_group_, msg_add_edge_with_reply, this,
|
||||
&adjacency_list::handle_add_edge_with_reply);
|
||||
simple_trigger(process_group_, msg_add_edge_with_property, this,
|
||||
&adjacency_list::handle_add_edge_with_property);
|
||||
simple_trigger(process_group_, msg_add_edge_with_property_and_reply, this,
|
||||
&adjacency_list::handle_add_edge_with_property_and_reply);
|
||||
simple_trigger(process_group_, msg_nonlocal_edge, this,
|
||||
&adjacency_list::handle_nonlocal_edge);
|
||||
simple_trigger(process_group_, msg_remove_edge, this,
|
||||
&adjacency_list::handle_remove_edge);
|
||||
}
|
||||
|
||||
template<PBGL_DISTRIB_ADJLIST_TEMPLATE_PARMS>
|
||||
void
|
||||
PBGL_DISTRIB_ADJLIST_TYPE::
|
||||
handle_add_vertex_with_property(int source, int tag,
|
||||
const vertex_property_type& data,
|
||||
trigger_receive_context)
|
||||
{
|
||||
vertex_descriptor v(this->processor(),
|
||||
add_vertex(this->build_vertex_property(data),
|
||||
this->base()));
|
||||
if (on_add_vertex)
|
||||
on_add_vertex(v, *this);
|
||||
}
|
||||
|
||||
template<PBGL_DISTRIB_ADJLIST_TEMPLATE_PARMS>
|
||||
typename PBGL_DISTRIB_ADJLIST_TYPE::local_vertex_descriptor
|
||||
PBGL_DISTRIB_ADJLIST_TYPE::
|
||||
handle_add_vertex_with_property_and_reply(int source, int tag,
|
||||
const vertex_property_type& data,
|
||||
trigger_receive_context)
|
||||
{
|
||||
// Try to find a vertex with this name
|
||||
local_vertex_descriptor local_v
|
||||
= add_vertex(this->build_vertex_property(data), this->base());
|
||||
|
||||
vertex_descriptor v(processor(), local_v);
|
||||
if (on_add_vertex)
|
||||
on_add_vertex(v, *this);
|
||||
|
||||
return local_v;
|
||||
}
|
||||
|
||||
template<PBGL_DISTRIB_ADJLIST_TEMPLATE_PARMS>
|
||||
void
|
||||
PBGL_DISTRIB_ADJLIST_TYPE::
|
||||
handle_add_edge(int source, int tag, const msg_add_edge_data& data,
|
||||
trigger_receive_context)
|
||||
{
|
||||
add_edge(vertex_descriptor(processor(), data.source),
|
||||
data.target, *this);
|
||||
}
|
||||
|
||||
template<PBGL_DISTRIB_ADJLIST_TEMPLATE_PARMS>
|
||||
boost::parallel::detail::untracked_pair<typename PBGL_DISTRIB_ADJLIST_TYPE::edge_descriptor, bool>
|
||||
PBGL_DISTRIB_ADJLIST_TYPE::
|
||||
handle_add_edge_with_reply(int source, int tag, const msg_add_edge_data& data,
|
||||
trigger_receive_context)
|
||||
{
|
||||
std::pair<typename PBGL_DISTRIB_ADJLIST_TYPE::edge_descriptor, bool> p =
|
||||
add_edge(vertex_descriptor(processor(), data.source),data.target, *this);
|
||||
return p;
|
||||
}
|
||||
|
||||
template<PBGL_DISTRIB_ADJLIST_TEMPLATE_PARMS>
|
||||
void
|
||||
PBGL_DISTRIB_ADJLIST_TYPE::
|
||||
handle_add_edge_with_property(int source, int tag,
|
||||
const msg_add_edge_with_property_data& data,
|
||||
trigger_receive_context)
|
||||
{
|
||||
add_edge(vertex_descriptor(processor(), data.source),
|
||||
data.target, data.get_property(), *this);
|
||||
}
|
||||
|
||||
template<PBGL_DISTRIB_ADJLIST_TEMPLATE_PARMS>
|
||||
boost::parallel::detail::untracked_pair<typename PBGL_DISTRIB_ADJLIST_TYPE::edge_descriptor, bool>
|
||||
PBGL_DISTRIB_ADJLIST_TYPE::
|
||||
handle_add_edge_with_property_and_reply
|
||||
(int source, int tag,
|
||||
const msg_add_edge_with_property_data& data,
|
||||
trigger_receive_context)
|
||||
{
|
||||
std::pair<typename PBGL_DISTRIB_ADJLIST_TYPE::edge_descriptor, bool> p =
|
||||
add_edge(vertex_descriptor(processor(), data.source),
|
||||
data.target, data.get_property(), *this);
|
||||
return p;
|
||||
}
|
||||
|
||||
template<PBGL_DISTRIB_ADJLIST_TEMPLATE_PARMS>
|
||||
void
|
||||
PBGL_DISTRIB_ADJLIST_TYPE::
|
||||
handle_nonlocal_edge(int source, int tag,
|
||||
const msg_nonlocal_edge_data& data,
|
||||
trigger_receive_context)
|
||||
{
|
||||
add_remote_edge(data, source, directed_selector());
|
||||
}
|
||||
|
||||
template<PBGL_DISTRIB_ADJLIST_TEMPLATE_PARMS>
|
||||
void
|
||||
PBGL_DISTRIB_ADJLIST_TYPE::
|
||||
handle_remove_edge(int source, int tag,
|
||||
const msg_remove_edge_data& data,
|
||||
trigger_receive_context)
|
||||
{
|
||||
remove_local_edge(data, source, directed_selector());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // BOOST_GRAPH_DISTRIBUTED_ADJLIST_HANDLERS_HPP
|
||||
|
||||
Reference in New Issue
Block a user