BGL: Bundled Properties in subgraphs
Hi, I am trying to use the subgraph class with bundled propeties and wonder if it is still broken? I found a message on the list saying that it was broken in March 2005, but would probably be fixed shortly. I include my code below. It compiles cleanly if I don't use subgraph, i.e. just declare the adjacency_list. It also works if use the internal properties method. Thanks, Greg // ... appropriate headers using namespace std; using namespace boost; typedef unsigned long int uvid; struct VertexProperty { uvid gmr_number; vector<string> labels; }; struct EdgeProperty { std::size_t biconnected_component; vector<string> labels; }; typedef adjacency_list<setS, vecS, undirectedS, VertexProperty, EdgeProperty> GraphPlain; typedef subgraph< GraphPlain > Graph; int main(int argc, char* argv[]) { GraphPlain g1; Graph g; return 0; }
On Nov 13, 2006, at 5:18 PM, Greg Reynolds wrote:
I am trying to use the subgraph class with bundled propeties and wonder if it is still broken? I found a message on the list saying that it was broken in March 2005, but would probably be fixed shortly.
It should have been fixed in April, 2005.
I include my code below. It compiles cleanly if I don't use subgraph, i.e. just declare the adjacency_list.
The error I'm seeing is coming from the lack of an edge_index property for the edges. If one adds that edge_index property, subgraph should work.
It also works if use the internal properties method.
Really? I can't get it to compile with internal properties (until I add an edge_index property). Cheers, Doug
On Thursday 16 November 2006 16:06, Doug Gregor wrote:
I include my code below. It compiles cleanly if I don't use subgraph, i.e. just declare the adjacency_list.
The error I'm seeing is coming from the lack of an edge_index property for the edges. If one adds that edge_index property, subgraph should work.
In case anyone else is wondering how to actually add the edge_index property, this is how I finally managed to get it to compile (using bundled and internal properties at the same time): typedef adjacency_list<vecS, vecS, undirectedS, VertexProperty, property<edge_index_t, int, EdgeProperty> > PlainGraph; typedef subgraph<PlainGraph> Graph; I tried to add a field named "edge_index" to the EdgeProperty struct at first, but that doesn't work. Marcel
Many thanks to all those who replied. I ended up using Marcel's solution. This does seem rather cryptic though - perhaps the example needs to be updated in the documentation? Thanks again, Greg On Fri, 17 Nov 2006, Marcel Martin wrote:
On Thursday 16 November 2006 16:06, Doug Gregor wrote:
I include my code below. It compiles cleanly if I don't use subgraph, i.e. just declare the adjacency_list.
The error I'm seeing is coming from the lack of an edge_index property for the edges. If one adds that edge_index property, subgraph should work.
In case anyone else is wondering how to actually add the edge_index property, this is how I finally managed to get it to compile (using bundled and internal properties at the same time):
typedef adjacency_list<vecS, vecS, undirectedS, VertexProperty, property<edge_index_t, int, EdgeProperty> > PlainGraph; typedef subgraph<PlainGraph> Graph;
I tried to add a field named "edge_index" to the EdgeProperty struct at first, but that doesn't work.
Marcel _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (3)
-
Doug Gregor
-
Greg Reynolds
-
Marcel Martin