Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge Struct Reference

Data structure returned from add_edge that will "lazily" add the edge, either when it is converted to a pair<edge_descriptor,bool> or when the most recent copy has been destroyed. More...

#include <named_graph.hpp>

Collaboration diagram for boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge:

Public Types

typedef graph_traits< Graph >
::edge_descriptor 
edge_descriptor
 The graph's edge descriptor. More...
 

Public Member Functions

 lazy_add_edge (named_graph< Graph, Vertex, Edge, Config > &self, const vertex_name_type &u_name, const vertex_name_type &v_name)
 Add an edge for the edge (u, v) based on vertex names. More...
 
 lazy_add_edge (named_graph< Graph, Vertex, Edge, Config > &self, vertex_descriptor u, const vertex_name_type &v_name)
 Add an edge for the edge (u, v) based on a vertex descriptor and name. More...
 
 lazy_add_edge (named_graph< Graph, Vertex, Edge, Config > &self, const vertex_name_type &u_name, vertex_descriptor v)
 Add an edge for the edge (u, v) based on a vertex name and descriptor. More...
 
 lazy_add_edge (named_graph< Graph, Vertex, Edge, Config > &self, vertex_descriptor u, vertex_descriptor v)
 Add an edge for the edge (u, v) based on vertex descriptors. More...
 
 lazy_add_edge (const lazy_add_edge &other)
 Copy a lazy_add_edge structure, which transfers responsibility for adding the edge to the newly-constructed object. More...
 
 ~lazy_add_edge ()
 If the edge has not yet been added, add the edge but don't wait for a reply. More...
 
 operator std::pair< edge_descriptor, bool > () const
 Returns commit(). More...
 
std::pair< edge_descriptor, bool > commit () const
 

Protected Attributes

named_graph< Graph, Vertex,
Edge, Config > & 
self
 
variant< vertex_descriptor,
vertex_name_type
u
 
variant< vertex_descriptor,
vertex_name_type
v
 
bool committed
 

Detailed Description

template<typename Graph, typename Vertex, typename Edge, typename Config>
struct boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge

Data structure returned from add_edge that will "lazily" add the edge, either when it is converted to a pair<edge_descriptor,bool> or when the most recent copy has been destroyed.

Member Typedef Documentation

template<typename Graph, typename Vertex, typename Edge, typename Config>
typedef graph_traits<Graph>::edge_descriptor boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::edge_descriptor

The graph's edge descriptor.

Constructor & Destructor Documentation

template<typename Graph, typename Vertex, typename Edge, typename Config>
boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::lazy_add_edge ( named_graph< Graph, Vertex, Edge, Config > &  self,
const vertex_name_type u_name,
const vertex_name_type v_name 
)
inline

Add an edge for the edge (u, v) based on vertex names.

template<typename Graph, typename Vertex, typename Edge, typename Config>
boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::lazy_add_edge ( named_graph< Graph, Vertex, Edge, Config > &  self,
vertex_descriptor  u,
const vertex_name_type v_name 
)
inline

Add an edge for the edge (u, v) based on a vertex descriptor and name.

template<typename Graph, typename Vertex, typename Edge, typename Config>
boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::lazy_add_edge ( named_graph< Graph, Vertex, Edge, Config > &  self,
const vertex_name_type u_name,
vertex_descriptor  v 
)
inline

Add an edge for the edge (u, v) based on a vertex name and descriptor.

template<typename Graph, typename Vertex, typename Edge, typename Config>
boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::lazy_add_edge ( named_graph< Graph, Vertex, Edge, Config > &  self,
vertex_descriptor  u,
vertex_descriptor  v 
)
inline

Add an edge for the edge (u, v) based on vertex descriptors.

template<typename Graph, typename Vertex, typename Edge, typename Config>
boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::lazy_add_edge ( const lazy_add_edge other)
inline

Copy a lazy_add_edge structure, which transfers responsibility for adding the edge to the newly-constructed object.

References boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::committed.

template<typename Graph , typename Vertex , typename Edge , typename Config >
boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::~lazy_add_edge ( )

If the edge has not yet been added, add the edge but don't wait for a reply.

If this edge has already been created or will be created by someone else, or if someone threw an exception, we will not create the edge now.

References boost::graph::distributed::add_edge(), boost::process_group(), and boost::graph::distributed::send().

Member Function Documentation

template<typename Graph , typename Vertex , typename Edge , typename Config >
std::pair< typename graph_traits< Graph >::edge_descriptor, bool > boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::commit ( ) const

The result we will return, if we are sending a message to request that someone else add the edge.

The owner of the vertex "u"

We haven't resolved the source vertex to a descriptor yet, so it must not be local.

Send a message to the remote vertex requesting that it add the edge. The message differs depending on whether we have a vertex name or a vertex descriptor for the target.

We have resolved the source vertex to a descriptor, which may either be local or remote.

The source is local. If we need to, resolve the target vertex.

Add the edge using vertex descriptors

The source is remote. Just send a message to its owner requesting that the owner add the new edge, either directly or via the derived class's add_edge function.

References boost::graph::distributed::add_edge(), boost::graph::distributed::add_vertex(), BOOST_ASSERT, boost::process_group(), boost::graph::distributed::process_id(), boost::graph::distributed::send_oob_with_reply(), and boost::vertex_owner.

template<typename Graph, typename Vertex, typename Edge, typename Config>
boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::operator std::pair< edge_descriptor, bool > ( ) const
inline

Returns commit().

Member Data Documentation

template<typename Graph, typename Vertex, typename Edge, typename Config>
bool boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::committed
mutableprotected
template<typename Graph, typename Vertex, typename Edge, typename Config>
named_graph<Graph, Vertex, Edge, Config>& boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::self
protected
template<typename Graph, typename Vertex, typename Edge, typename Config>
variant<vertex_descriptor, vertex_name_type> boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::u
mutableprotected
template<typename Graph, typename Vertex, typename Edge, typename Config>
variant<vertex_descriptor, vertex_name_type> boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::lazy_add_edge::v
mutableprotected

The documentation for this struct was generated from the following file: