Boost logo

Boost Users :

From: Dmitry (dmitry_at_[hidden])
Date: 2007-02-05 05:07:39


"Jens Muller" <jens.mueller_at_[hidden]> wrote in message
news:<eq58j2$v4m$1_at_[hidden]>...
> > Jens,
> > I think that you are missing something. As for me, the property_traits
class
> > is just a way of uniform data manipulation.
>
> If every pm needed to be a class, there would be no need for the
> *_traits template classes.
>
> http://www.boost.org/libs/graph/doc/leda_conversion.html
>
> The Adaptor pattern [12] typically requires that the adaptee object be
> contained inside a new class that provides the desired interface. This
> containment is not required when wrapping a graph for BGL because the
> BGL graph interface consists solely of free (global) functions. Instead
> of creating a new graph class, you need to overload all the free
> functions required by the interface. We call this free function wrapper
> approach external adaptation
>
> ...
>
> All types associated with a BGL graph class are accessed though the
> graph_traits class. We can partially specialize this traits class for
> the LEDA GRAPH class in the following way.
>
>
> The same is done here for vectors and the like.
>
Unfortunately I can't follow this :-(

> > Your class has to be a model of
> > this abstract concept. (To be a Read Property Map it is enough to have 3
> > typedefs and get() function, see Concept Checking Class in the
documentation
> > that you referred).
>
> Yes, it says the get() free function and 3 typedefs in property_traits
> need to be defined.
>
> Anyway, it works now, see attachments.

The changes in "bfs_map_test.cpp" are exactly I was thinking of)

> One question remains, though:
>
> template<typename Graph, typename ReadablePropertyMap, typename
ColorValue>
> ColorValue MapAsColorMap<Graph, ReadablePropertyMap,
> ColorValue>::get(key_type key)
> {
> return (boost::get(pm_, key)==white_) ?
> boost::color_traits<ColorValue>::white()
> :
> boost::color_traits<ColorValue>::black();
> }
>
>
> works, while get(pm_, key) without boost:: doesn't.
>
> Shouldn't the right get function be found by Koenig lookup?

Probably yes, but AFAIK not all compilers have it implemented.
 
> http://www.boost.org/libs/property_map/ReadablePropertyMap.html says,
> too, that get is required, not boost::get ...

I think this is because ReadablePropertyMapConcept class already defined in
boost:: namespace.

Regards,
--Dmitry.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net