| 12 | template <typename VertexProp = no_property, |
| 13 | typename EdgeProp = no_property> |
| 14 | class DirectedGraph |
| 15 | { |
| 16 | class Vertex; |
| 17 | typedef typename std::vector<Vertex> Vertices; |
| 18 | class Edge; |
| 19 | typedef typename std::vector<Edge> Edges; |
| 20 | |
| 21 | public: |
| 22 | // Graph |
| 23 | typedef ContigNode vertex_descriptor; |
| 24 | |
| 25 | // IncidenceGraph |
| 26 | typedef std::pair<vertex_descriptor, vertex_descriptor> |
| 27 | edge_descriptor; |
| 28 | typedef unsigned degree_size_type; |
| 29 | |
| 30 | // BidirectionalGraph |
| 31 | typedef void in_edge_iterator; |
| 32 | |
| 33 | // VertexListGraph |
| 34 | typedef unsigned vertices_size_type; |
| 35 | |
| 36 | // EdgeListGraph |
| 37 | typedef unsigned edges_size_type; |
| 38 | |
| 39 | // PropertyGraph |
| 40 | typedef VertexProp vertex_bundled; |
| 41 | typedef VertexProp vertex_property_type; |
| 42 | typedef EdgeProp edge_bundled; |
| 43 | typedef EdgeProp edge_property_type; |
| 44 | |
| 45 | typedef boost::directed_tag directed_category; |
| 46 | typedef boost::allow_parallel_edge_tag edge_parallel_category; |
| 47 | struct traversal_category |
| 48 | : boost::incidence_graph_tag, |
| 49 | boost::adjacency_graph_tag, |
| 50 | boost::vertex_list_graph_tag, |
| 51 | boost::edge_list_graph_tag { }; |
| 52 | |
| 53 | /** Iterate through the vertices of this graph. */ |
| 54 | class vertex_iterator |
| 55 | : public std::iterator<std::input_iterator_tag, |
| 56 | const vertex_descriptor> |
| 57 | { |
| 58 | public: |
| 59 | vertex_iterator() { } |
| 60 | explicit vertex_iterator(vertices_size_type v) : m_v(v) { } |
| 61 | const vertex_descriptor& operator *() const { return m_v; } |
| 62 | |
| 63 | bool operator ==(const vertex_iterator& it) const |
| 64 | { |
| 65 | return m_v == it.m_v; |
| 66 | } |
| 67 | |
| 68 | bool operator !=(const vertex_iterator& it) const |
| 69 | { |
| 70 | return m_v != it.m_v; |
| 71 | } |
nothing calls this directly
no test coverage detected