write_graphviz.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2007 Trustees of Indiana University
  2. // Use, modification and distribution is subject to the Boost Software
  3. // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  4. // http://www.boost.org/LICENSE_1_0.txt)
  5. // A simple example of using write_graphviz to output a BGL adjacency_list
  6. // graph in GraphViz Dot format.
  7. // Author: Doug Gregor
  8. #include <boost/graph/graphviz.hpp>
  9. enum files_e { dax_h, yow_h, boz_h, zow_h, foo_cpp,
  10. foo_o, bar_cpp, bar_o, libfoobar_a,
  11. zig_cpp, zig_o, zag_cpp, zag_o,
  12. libzigzag_a, killerapp, N };
  13. const char* name[] = { "dax.h", "yow.h", "boz.h", "zow.h", "foo.cpp",
  14. "foo.o", "bar.cpp", "bar.o", "libfoobar.a",
  15. "zig.cpp", "zig.o", "zag.cpp", "zag.o",
  16. "libzigzag.a", "killerapp" };
  17. int main(int,char*[])
  18. {
  19. typedef std::pair<int,int> Edge;
  20. Edge used_by[] = {
  21. Edge(dax_h, foo_cpp), Edge(dax_h, bar_cpp), Edge(dax_h, yow_h),
  22. Edge(yow_h, bar_cpp), Edge(yow_h, zag_cpp),
  23. Edge(boz_h, bar_cpp), Edge(boz_h, zig_cpp), Edge(boz_h, zag_cpp),
  24. Edge(zow_h, foo_cpp),
  25. Edge(foo_cpp, foo_o),
  26. Edge(foo_o, libfoobar_a),
  27. Edge(bar_cpp, bar_o),
  28. Edge(bar_o, libfoobar_a),
  29. Edge(libfoobar_a, libzigzag_a),
  30. Edge(zig_cpp, zig_o),
  31. Edge(zig_o, libzigzag_a),
  32. Edge(zag_cpp, zag_o),
  33. Edge(zag_o, libzigzag_a),
  34. Edge(libzigzag_a, killerapp)
  35. };
  36. const int nedges = sizeof(used_by)/sizeof(Edge);
  37. int weights[nedges];
  38. std::fill(weights, weights + nedges, 1);
  39. using namespace boost;
  40. typedef adjacency_list< vecS, vecS, directedS,
  41. property< vertex_color_t, default_color_type >,
  42. property< edge_weight_t, int >
  43. > Graph;
  44. Graph g(used_by, used_by + nedges, weights, N);
  45. write_graphviz(std::cout, g, make_label_writer(name));
  46. }