Thanks it works


On Wed, Dec 14, 2011 at 5:35 PM, Jeremiah Willcock <jewillco@osl.iu.edu> wrote:
On Wed, 14 Dec 2011, Amanullah Yasin wrote:

Hello,

I want to put edge label but facing an error. Please share any better idea.
Thanks in advance.

BTW, you shouldn't add things to the boost namespace; property names don't need to be in that namespace.  Anyway, the code worked for me with GCC 4.6.  Here's the full test program I used:

#include <boost/graph/properties.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <string>
#include <iostream>

struct plComputableObject;
struct slScoreValueType {};

namespace boost {
 struct computable_object_t
 {
   typedef vertex_property_tag kind;
 };
}

typedef boost::property<boost::vertex_index_t, unsigned int,
       boost::property<boost::computable_object_t,
       plComputableObject*> > slVertexProperty;

typedef boost::property<boost::edge_weight_t, slScoreValueType,
       boost::property<boost::edge_name_t, std::string> > slEdgeProperty;


typedef boost::adjacency_list<boost::vecS, boost::listS, boost::bidirectionalS,
       slVertexProperty, slEdgeProperty> slGraph;


int main(int, char**) {
 using namespace boost;
 slGraph graph;


 //Now i want to add edge name
 boost::property_map<slGraph, edge_name_t>::type labelmap = get(edge_name, graph);

 boost::graph_traits<slGraph>::edge_iterator ei, ei_end;

 for(tie(ei, ei_end) = edges(graph); ei != ei_end; ++ei){

   std::string label = "unknown";
   put(labelmap, *ei, label);
   std::cout<<"\nUndirected s: "<<source(*ei, graph) <<" T: "<<target(*ei, graph)<<" LABEL: "<< get(labelmap,*ei);
 }
}

-- Jeremiah Willcock