1 #ifndef DISTIO_H
2 #define DISTIO_H 1
3
4 #include <boost/graph/graph_traits.hpp>
5 #include <cassert>
6 #include <ostream>
7
8 using boost::graph_traits;
9
10 /** Output a distance estimate graph. */
11 template <typename Graph>
write_dist(std::ostream & out,const Graph & g)12 std::ostream& write_dist(std::ostream& out, const Graph& g)
13 {
14 typedef typename graph_traits<Graph>::vertex_descriptor V;
15 typedef typename graph_traits<Graph>::vertex_iterator Vit;
16 typedef typename graph_traits<Graph>::out_edge_iterator Eit;
17
18 std::pair<Vit, Vit> urange = vertices(g);
19 for (Vit uit = urange.first; uit != urange.second; ++uit) {
20 V u = *uit;
21 if (get(vertex_removed, g, u)
22 || out_degree(u, g) + in_degree(u, g) == 0)
23 continue;
24 bool sense = get(vertex_sense, g, u);
25 if (!sense)
26 out << get(vertex_contig_name, g, u);
27 else
28 out << " ;";
29 std::pair<Eit, Eit> erange = out_edges(u, g);
30 for (Eit eit = erange.first; eit != erange.second; ++eit) {
31 V v = target(*eit, g) ^ sense;
32 assert(!get(vertex_removed, g, v));
33 out << ' ' << get(vertex_name, g, v)
34 << ',' << get(edge_bundle, g, eit);
35 }
36 if (sense)
37 out << '\n';
38 }
39 return out;
40 }
41
42 #endif
43