Opened 15 years ago
Closed 12 years ago
#1021 closed Bugs (fixed)
[Graph][reverse_graph] Problem using reverse_graph adapter with an adapted user defined graph
Reported by: | Owned by: | Jeremiah Willcock | |
---|---|---|---|
Milestone: | Component: | graph | |
Version: | Severity: | Problem | |
Keywords: | Cc: |
Description
I have had some difficulty using the current version of the reverse_graph adapter on the Boost Graph Library. It seems to require the class being reversed to have types that a user class that has been adapted using graph_traits et al may not have. I have attached an example that shows the problem which includes comments to describe what I think the problem is. I have also attached a modified version of reverse_graph.hpp that works with this example.
-Tony
Attached files:
bug_report_example_skeleton.hpp An include file the contains a minimal user defined graph MyGraph together with the required interfaces to adapt it to be a Boost Graph.
bug_report_example_reverse_graph.cpp An example showing the problems encountered with the current reverse_graph.hpp
reverse_graph.hpp An altered version of reverse_graph.hpp that works with the example.
Attachments (3)
Change History (9)
by , 15 years ago
Attachment: | bug_report_example_skeleton.hpp added |
---|
by , 15 years ago
Attachment: | bug_report_example_reverse_graph.cpp added |
---|
by , 15 years ago
Attachment: | reverse_graph.hpp added |
---|
comment:1 by , 15 years ago
Owner: | set to |
---|
comment:2 by , 14 years ago
Owner: | changed from | to
---|
comment:3 by , 13 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:4 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:5 by , 12 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
This bug has been reintroduced as of [64645]. The same example files from 4 years ago cause compile issues, I just needed to update to the new path of property_map.hpp. I believe these six definitions inside the reverse_graph class should be taken out and separated from the class so they are only used when needed:
83 typedef typename graph_property_type<base_type>::type graph_property_type; 84 typedef typename graph_bundle_type<base_type>::type graph_bundled; 85 86 typedef typename vertex_property_type<base_type>::type vertex_property_type; 87 typedef typename vertex_bundle_type<base_type>::type vertex_bundled; 88 89 typedef typename edge_property_type<base_type>::type edge_property_type; 90 typedef typename edge_bundle_type<base_type>::type edge_bundled;
The earlier fix fixed some of these, and indeed it looks like vertex_property_type and edge_property_type are now defined two ways, both inside and outside the class:
120 // These are separate so they are not instantiated unless used (see bug 1021) 121 template <class BidirectionalGraph, class GraphRef> 122 struct vertex_property_type<reverse_graph<BidirectionalGraph, GraphRef> > { 123 typedef typename boost::vertex_property_type<BidirectionalGraph>::type type; 124 }; 125 126 template <class BidirectionalGraph, class GraphRef> 127 struct edge_property_type<reverse_graph<BidirectionalGraph, GraphRef> > { 128 typedef typename boost::edge_property_type<BidirectionalGraph>::type type; 129 };
comment:6 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
(In [57902]) Fixed uses of undocumented members of graph types; fixes #1021; fixes #2072