Boost logo

Boost Users :

Subject: Re: [Boost-users] Accessing exterior graph properties by name
From: Jeremiah Willcock (jewillco_at_[hidden])
Date: 2012-01-26 14:17:23

On Thu, 26 Jan 2012, David Doria wrote:

> Is there a way to "associate" an external property map to a name so
> that it can be retrieved from the graph?
> With a standard interior property, you can do:
> // Declare that you will be able to identify a property map by "vertex_data"
> namespace boost {
> enum vertex_data_t { vertex_data };
> };
> // Get the vertex_data property map from the graph
> typedef boost::property_map<Graph, boost::vertex_data_t>::type PropertyMapType;
> PropertyMapType propertyMap = get(boost::vertex_data, g);
> However, with the exterior properties, I can associate the property
> map with the nodes of the graph:
> typedef boost::property_map<GraphType,
> boost::vertex_index_t>::const_type indexMapType;
> indexMapType indexMap(get(boost::vertex_index, graph));
> boost::vector_property_map<float, indexMapType> myMap(100, indexMap);
> but how would I then be able to, only having the graph object, get
> this map? That is, there was never any name, like "vertex_data"
> introduced in this case.

There isn't any way to do that as far as I know, since the graph type
doesn't know about the property map that you create later. There are
dynamic_properties objects that do property lookups by name for I/O, but
those aren't quite the same as what you are asking about. I'm sure also has something like that for
dynamically adding properties, but I do not know how it works.

-- Jeremiah Willcock

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at