30 #ifndef __CLAW_GRAPH_HPP__
31 #define __CLAW_GRAPH_HPP__
57 virtual const char*
what()
const throw();
61 const std::string m_msg;
76 template <
class S,
class A = meta::no_type,
class Comp = std::less<S> >
95 typedef std::map<vertex_type, neighbours_list, vertex_compare>
106 friend class graph<vertex_type, edge_type, vertex_compare>;
109 typedef const vertex_type value_type;
110 typedef const vertex_type& reference;
111 typedef const vertex_type*
const pointer;
112 typedef ptrdiff_t difference_type;
114 typedef std::bidirectional_iterator_tag iterator_category;
134 typename graph_content::const_iterator m_iterator;
144 friend class graph<vertex_type, edge_type, vertex_compare>;
157 const edge_type&
label()
const;
158 const vertex_type&
source()
const;
159 const vertex_type&
target()
const;
162 void set(
const edge_type& l,
const vertex_type& s,
163 const vertex_type& t );
166 edge_type
const* m_label;
167 vertex_type
const* m_source;
168 vertex_type
const* m_target;
174 typedef const edge*
const pointer;
175 typedef ptrdiff_t difference_type;
177 typedef std::bidirectional_iterator_tag iterator_category;
194 typename graph_content::const_iterator it_end,
195 typename graph_content::const_iterator it_s,
196 typename neighbours_list::const_iterator it_d );
200 typename graph_content::const_iterator m_vertex_begin;
203 typename graph_content::const_iterator m_vertex_end;
206 typename graph_content::const_iterator m_vertex_iterator;
209 typename neighbours_list::const_iterator m_neighbours_iterator;
220 typedef std::reverse_iterator<vertex_iterator> reverse_vertex_iterator;
221 typedef std::reverse_iterator<edge_iterator> reverse_edge_iterator;
232 void vertices( std::vector<vertex_type>& v )
const;
264 std::map<vertex_type, std::size_t, vertex_compare> m_inner_degrees;
267 std::size_t m_edges_count;
275 #endif // __CLAW_GRAPH_HPP__