#include "boost/graph/graphviz.hpp"
struct myVertex_t {
int color;
};
typedef boost::adjacency_list<
boost::vecS, // edge container
boost::vecS, // vertex container
boost::undirectedS, // type of graph
myVertex_t, // vertex properties
boost::property< // edge properties
boost::edge_color_t, // ???
boost::default_color_type // enum, holds 5 colors
>
> myGraph_t;
template<typename graph_t, typename vertex_t>
void RenderGraph( const graph_t& g )
{
boost::dynamic_properties dp;
dp.property( "color", boost::get( &vertex_t::color, g ) );
dp.property( "node_id", boost::get( boost::vertex_index, g ) );
boost::write_graphviz_dp( std::cout, g, dp );
}
int main()
{
myGraph_t g;
boost::add_edge(0, 1, g);
myGraph_t::vertex_iterator it = vertices(g).first;
g[*it++].color = 42;
g[*it++].color = 43;
RenderGraph<myGraph_t,myVertex_t>( g );
}
I2luY2x1ZGUgImJvb3N0L2dyYXBoL2dyYXBodml6LmhwcCIKCnN0cnVjdCBteVZlcnRleF90IHsKCWludCBjb2xvcjsKfTsKCnR5cGVkZWYgYm9vc3Q6OmFkamFjZW5jeV9saXN0PAoJYm9vc3Q6OnZlY1MsICAgICAgICAgICAgICAgICAgIC8vIGVkZ2UgY29udGFpbmVyCglib29zdDo6dmVjUywgICAgICAgICAgICAgICAgICAgLy8gdmVydGV4IGNvbnRhaW5lcgoJYm9vc3Q6OnVuZGlyZWN0ZWRTLCAgICAgICAgICAgIC8vIHR5cGUgb2YgZ3JhcGgKCW15VmVydGV4X3QsICAgICAgICAgICAgICAgICAgICAvLyB2ZXJ0ZXggcHJvcGVydGllcwoJYm9vc3Q6OnByb3BlcnR5PCAgICAgICAgICAgICAgIC8vIGVkZ2UgcHJvcGVydGllcwoJCWJvb3N0OjplZGdlX2NvbG9yX3QsICAgICAgICAgICAgIC8vID8/PwoJCWJvb3N0OjpkZWZhdWx0X2NvbG9yX3R5cGUgICAgICAgIC8vIGVudW0sIGhvbGRzIDUgY29sb3JzCgkJPgoJPiBteUdyYXBoX3Q7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBncmFwaF90LCB0eXBlbmFtZSB2ZXJ0ZXhfdD4Kdm9pZCBSZW5kZXJHcmFwaCggY29uc3QgZ3JhcGhfdCYgZyApCnsKCWJvb3N0OjpkeW5hbWljX3Byb3BlcnRpZXMgZHA7CglkcC5wcm9wZXJ0eSggImNvbG9yIiwgICBib29zdDo6Z2V0KCAmdmVydGV4X3Q6OmNvbG9yLCAgICBnICkgKTsKCWRwLnByb3BlcnR5KCAibm9kZV9pZCIsIGJvb3N0OjpnZXQoIGJvb3N0Ojp2ZXJ0ZXhfaW5kZXgsIGcgKSApOwoJYm9vc3Q6OndyaXRlX2dyYXBodml6X2RwKCBzdGQ6OmNvdXQsIGcsIGRwICk7Cn0KCmludCBtYWluKCkKewoJbXlHcmFwaF90IGc7Cglib29zdDo6YWRkX2VkZ2UoMCwgMSwgZyk7CgoJbXlHcmFwaF90Ojp2ZXJ0ZXhfaXRlcmF0b3IgaXQgPSB2ZXJ0aWNlcyhnKS5maXJzdDsKCWdbKml0KytdLmNvbG9yID0gNDI7CglnWyppdCsrXS5jb2xvciA9IDQzOwoKCVJlbmRlckdyYXBoPG15R3JhcGhfdCxteVZlcnRleF90PiggZyApOwp9Cgo=
In file included from /usr/include/boost/graph/graphviz.hpp:19:0,
from prog.cpp:1:
/usr/include/boost/property_map/property_map.hpp: In instantiation of 'void boost::put(const boost::put_get_helper<Reference, PropertyMap>&, K, const V&) [with PropertyMap = boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >, const boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >*, int, const int&, int myVertex_t::*>; Reference = const int&; K = unsigned int; V = int]':
/usr/include/boost/property_map/dynamic_property_map.hpp:151:10: required from 'void boost::detail::dynamic_property_map_adaptor<PropertyMap>::do_put(const boost::any&, const boost::any&, mpl_::bool_<true>) [with PropertyMap = boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >, const boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >*, int, const int&, int myVertex_t::*>]'
/usr/include/boost/property_map/dynamic_property_map.hpp:186:11: required from 'void boost::detail::dynamic_property_map_adaptor<PropertyMap>::put(const boost::any&, const boost::any&) [with PropertyMap = boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >, const boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >*, int, const int&, int myVertex_t::*>]'
prog.cpp:37:1: required from here
/usr/include/boost/property_map/property_map.hpp:364:44: error: assignment of read-only location '(&((const boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >, const boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >*, int, const int&, int myVertex_t::*>&)pa))->boost::vec_adj_list_vertex_property_map<Graph, GraphPtr, ValueType, Reference, Tag>::operator[]<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >, const boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >*, int, const int&, int myVertex_t::*>(k)'
static_cast<const PropertyMap&>(pa)[k] = v;
^