8b185359ef
[SVN r53475]
131 lines
3.4 KiB
HTML
131 lines
3.4 KiB
HTML
<html>
|
||
<head>
|
||
<!-- Copyright 2007 Aaron Windsor
|
||
|
||
Distributed under 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)
|
||
|
||
-->
|
||
<title>AddEdgeVisitor Concept</title>
|
||
</head>
|
||
<body alink="#ff0000"
|
||
bgcolor="#ffffff"
|
||
link="#0000ee"
|
||
text="#000000"
|
||
vlink="#551a8b">
|
||
|
||
<img src="../../../boost.png" alt="C++ Boost" height="86" width="277">
|
||
|
||
<br clear="">
|
||
|
||
<h1>AddEdgeVisitor Concept</h1>
|
||
|
||
The AddEdgeVisitor concept exists to allow for some indirection in algorithms
|
||
that modify graphs by adding edges. In such algorithms, it may be convenient
|
||
to perform additional operations (such as updating an edge index map) at
|
||
points in the algorithm where an edge addition occurs. Replacing calls to
|
||
to <tt>add_edge</tt> with calls to <tt>AddEdgeVisitor::visit_vertex_pair</tt>
|
||
allows for such operations to be defined independently from the algorithm.
|
||
|
||
<h3>Notation</h3>
|
||
|
||
<table>
|
||
<tbody>
|
||
|
||
<tr>
|
||
<td> <tt>Visitor</tt> </td>
|
||
<td> is a type that models the AddEdgeVisitor concept </td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td> <tt>vis</tt> </td>
|
||
<td> is an object of type Visitor </td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td> <tt>Graph</tt> </td>
|
||
<td> is the type of a graph </td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td> <tt>u,v</tt> </td>
|
||
<td> are objects of type <tt>graph_traits<Graph>::vertex_descriptor</tt>
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td> <tt>e</tt> </td>
|
||
<td> is an object of type <tt>graph_traits<Graph>::edge_descriptor</tt>
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td> <tt>v</tt> </td>
|
||
<td> is an object of type <tt>graph_traits<Graph>::vertex_descriptor</tt>
|
||
</td>
|
||
|
||
</tr><tr>
|
||
<td>
|
||
|
||
</td></tr></tbody></table>
|
||
|
||
|
||
<h3>Associated Types</h3>
|
||
|
||
None
|
||
|
||
<h3>Valid Expressions</h3>
|
||
|
||
<p>
|
||
|
||
<table border="1">
|
||
|
||
<tbody><tr><th>Name</th><th>Expression</th><th>Return Type</th>
|
||
<th>Description</th>
|
||
|
||
</tr><tr>
|
||
<td> Add an Edge </td>
|
||
<td> <tt>vis.visit_vertex_pair(u, v, g)</tt> </td>
|
||
<td> <tt>void</tt></td>
|
||
<td> Invoked every time an edge between vertices <tt>u</tt> and <tt>v</tt>
|
||
should be added to the graph <tt>g</tt>.
|
||
</td></tr>
|
||
|
||
</tbody></table>
|
||
|
||
</p><h3>Models</h3>
|
||
|
||
Two models of this concept are defined in the file
|
||
<a href="../../../boost/graph/planar_detail/add_edge_visitors.hpp">
|
||
<tt>add_edge_visitors.hpp</tt></a>:
|
||
|
||
<ul>
|
||
<li><tt>default_add_edge_visitor</tt>: The constructor of this class takes
|
||
no arguments.<tt>visit_vertex_pair(u, v, g)</tt> is just a dispatch to
|
||
<tt>add_edge(u, v, g)</tt>.
|
||
<li><tt>edge_index_update_visitor</tt>: The constructor of this class takes
|
||
two arguments: the first, an EdgeIndexMap,
|
||
is a <a href="../../property_map/doc/ReadWritePropertyMap.html">
|
||
ReadWritePropertyMap</a> that maps each edge in the associated graph
|
||
<tt>g</tt> to a distinct integer in the range <tt>[0, num_edges(g))</tt>.
|
||
The second argument is the number of edges in the underlying graph, which
|
||
serves as the "next available index" counter within the visitor.
|
||
For example, in the case the graph used has an initialized interior
|
||
edge index, the <tt>edge_index_update_visitor</tt> constructor should be
|
||
called with <tt>get(edge_index, g)</tt> as the edge index and
|
||
<tt>num_edges(g)</tt> as the next available index. When
|
||
<tt>visit_vertex_pair(u, v, g)</tt> is called, the
|
||
<tt>edge_index_update_visitor</tt> will add the edge <i>(u,v)</i> to the graph
|
||
and update the edge index for the newly created edge.
|
||
</ul>
|
||
|
||
<p>
|
||
|
||
<br>
|
||
</p><hr>
|
||
Copyright <20> 2007 Aaron Windsor (<a href="mailto:aaron.windsor@gmail.com">
|
||
aaron.windsor@gmail.com</a>)
|
||
|
||
</body></html>
|