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