From: Jens Müller (jens.mueller_at_[hidden])
Date: 2007-03-12 12:24:05


Hi,

I'm currently trying to write a bidirected graph adapter (which in short
takes a bidirectional graph and doubles all edges, so the graph is
bidirected, I don't care whether that creates parallel edges). This is
useful e.g. for search algorithms that expect a directed graph and
follows edges only in their true direction.

I've taken <boost/graph/reverse_graph.hpp> as a start, and I am
currently working on property maps.

In reverse_graph.hpp, I found a specialization of
vertex_property_selector (and edge_property_selector). Google shows only
code for that word, no documentation.

How exactly is this supposed to work? When I need the type of a pmap
given a Graph and a Tag, some traits class (which?) looks at the
graph_tag of my graph, takes the class given as type in
vertex_property_selector<graph_tag> and specialized the bind_ member of
that type? Is this right?

So, I can have s spezialization of bind_ for a specific Tag, right? I
want to pass on all property accesses to the underlying graph, except
edge_index_t: I want to double that and add 1 for the reverse edges, so
I can create a iterator_property_map based on edge_index when I need it.

Oh, and what is the purpose of the Property template parameter of bind_?

When this is finished, is there any interest to have that adapter in BGL?

Cheers,

Jens