-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Jeremy,
I think I discovered a problem concerning filtered_graphs and parallel edges:
Assume I have a graph containing two edges E1 and E2 connecting node A and
node B. Now I crate a boost::filtered_graph (myFilteredGraph) with a filter
that returns true for only E1. When I now try to get E1 by calling
edge = boost::edge( A, B, myFilteredGraph ).first;
the result is undefined. Looking at the code (filtered_graph.hpp) I found out
that the edge is return by:
edge(typename filtered_graph::vertex_descriptor u,
typename filtered_graph::vertex_descriptor v,
const filtered_graph& g)
{
typename G::edge_descriptor e;
bool exists;
tie(e, exists) = edge(u, v, g.m_g);
return std::make_pair(e, exists && g.m_edge_pred(e));
}
Here, the line
tie(e, exists) = edge(u, v, g.m_g);
returns _some_ edge, but not necessarily the _right_ one. The call edge(...)
is not called for the filtered graph and
g.m_edge_pred(e)
is called _after_ getting the wrong edge (resulting in a return value FALSE).
One solution would be to call
boost::edge_range(A, B, myFilteredGraph)
on my filtered_graph to get all visible edges, but this function is not
provided. Any ideas how to solve my problem?
Michael
- --
http://www.ive.uni-hannover.de # kettner@ive.uni-hannover.de
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE9TqUAkCdGnb0kVFMRAlsLAJwKJJ2NSLRu2HUv/H4sAhr4W5WdkACdHXZ6
3kz8fBDvysWKc1vxd5rf/CE=
=l+NV
-----END PGP SIGNATURE-----