Boost logo

Boost Users :

From: Doug Gregor (dgregor_at_[hidden])
Date: 2004-11-08 11:32:23


On Nov 8, 2004, at 12:16 AM, Stephen torri wrote:

> I have the following graph:
>
> typedef property< vertex_index_t, uint32_t,
> property< vertex_name_t, boost::shared_ptr<Component> > >
> VertexProperty;
>
> typedef adjacency_list<setS, // OutEdgeList
> setS, // VertexList
> directedS, // Directed
> VertexProperty> // VertexProperties
> Graph_Type;
>
> When I looked at the documentation I did not see an example which used
> a
> boost::shared_ptr to store information at the vertex. Here is my
> attempt
> at writing a PropertyWriter. I cannot figure out how to write the 2nd
> function argument type:
>
> class Component_Writer {
> public:
> void operator()(std::ostream& out,
> const boost::shared_ptr<Component> obj) const
> {
> out << "[label=\""
> << obj_ptr->get_Name()
> << "\n"
> << obj_ptr->get_ID()
> << "\"]";
> }
> };

A property writer is passed the output stream and the descriptor, so
you want to write Component_Writer like so:

class Component_Writer {
public:
   typedef boost::graph_traits<Graph_Type>::vertex_descriptor
Vertex_Type;

   Component_Writer(const Graph_Type& g) : g(g) {}

   void operator()(std::ostream& out, Vertex_Type v)
   {
     boost::shared_ptr<Component> obj_ptr = get(vertex_name, g, v);
     // code from before...
   }
};

        Doug


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