On Mon, 2004-11-08 at 15:17, Jeffrey Holle wrote:
I believe you need to use boost::make_label_writer. Here is how I use it to place information from an external property map:
ofstream os("workFlow.dot"); write_graphviz(os,workFlowGraph_,make_label_writer(workFlowVertexLabeler(workFlowGraph_)));
Where workFlowVertexLabeler is:
struct workFlowVertexLabeler { workFlowVertexLabeler(WorkFlowGraph& workFlowGraph) : workFlowGraph_(workFlowGraph) {} std::string operator[](const WorkFlowVertex& v) const { return workFlowGraph_.getWorkFlowData()[v].getLabel(); } private: WorkFlowGraph& workFlowGraph_;
Your solution words when modified for my situation (data structure). The problem with the edge labelling still remains. I see a problem with the loop in graphviz.hpp that prints out the edges: typename graph_traits<Graph>::edge_iterator ei, edge_end; for(tie(ei, edge_end) = edges(g); ei != edge_end; ++ei) { out << source(*ei, g) << Traits::delimiter() << target(*ei, g) << " "; epw(out, *ei); //print edge attributes out << ";" << std::endl; } There is no operator<< function for graph_traits so the memory location of the vertex_descriptor that is returned is printed instead of the vertex_index_t value used to name the nodes above. I don't see why this does not work as the documentation example. Stephen -- Email: storri@torri.org