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: Tony.Tye@… 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)

bug_report_example_skeleton.hpp (10.3 KB ) - added by anonymous 15 years ago.
bug_report_example_reverse_graph.cpp (3.0 KB ) - added by anonymous 15 years ago.
reverse_graph.hpp (9.6 KB ) - added by anonymous 15 years ago.

Download all attachments as: .zip

Change History (9)

by anonymous, 15 years ago

by anonymous, 15 years ago

by anonymous, 15 years ago

Attachment: reverse_graph.hpp added

comment:1 by Eric Niebler, 15 years ago

Owner: set to doug_gregor

comment:2 by Douglas Gregor, 14 years ago

Owner: changed from doug_gregor to Douglas Gregor

comment:3 by Jeremiah Willcock, 13 years ago

Owner: changed from Douglas Gregor to Jeremiah Willcock
Status: newassigned

comment:4 by Jeremiah Willcock, 13 years ago

Resolution: fixed
Status: assignedclosed

(In [57902]) Fixed uses of undocumented members of graph types; fixes #1021; fixes #2072

comment:5 by jeff.baumes@…, 12 years ago

Resolution: fixed
Status: closedreopened

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 Jeremiah Willcock, 12 years ago

Resolution: fixed
Status: reopenedclosed

(In [66907]) Fixed up computation of property types; fixes #1021

Note: See TracTickets for help on using tickets.