37 #ifndef DATATOOLS_DEPENDENCY_GRAPH_H 38 #define DATATOOLS_DEPENDENCY_GRAPH_H 48 #include <boost/config.hpp> 49 #include <boost/utility.hpp> 50 #include <boost/graph/graph_traits.hpp> 51 #include <boost/graph/adjacency_list.hpp> 52 #include <boost/graph/depth_first_search.hpp> 53 #include <boost/graph/breadth_first_search.hpp> 54 #include <boost/graph/properties.hpp> 55 #include <boost/graph/one_bit_color_map.hpp> 56 #include <boost/property_map/property_map.hpp> 98 typedef typename boost::adjacency_list<
101 boost::bidirectionalS,
107 typedef boost::graph_traits<graph_t>::vertex_descriptor
vertex_t;
108 typedef boost::graph_traits<graph_t>::edge_descriptor
edge_t;
122 const std::string & category_ =
"")
const;
126 const std::string & category_);
130 const std::string & id_to_,
131 const std::string & topic_);
135 const std::string & id2_,
136 const std::string & topic_ =
"")
const;
143 :
public boost::dfs_visitor<>
164 std::cerr <<
"[devel] Discovered cycle at back edge [" << e_<<
"]" << std::endl;
165 _vertices->insert(boost::source(e_, g_));
166 _vertices->insert(boost::target(e_, g_));
183 :
public boost::dfs_visitor<>
188 :
public std::exception
196 const std::string & category_)
249 if (
_start == std::numeric_limits<vertex_t>::max()) {
296 const std::string & category_)
const;
300 const std::string & category_ =
"",
301 const std::size_t depth_ = 0)
const;
315 void export_graphviz(std::ostream & out_,
const uint32_t flags_ = 0)
const;
321 vertex_t _get_vertex_(
const std::string & id_)
const;
324 void _find_dependers_of_category_from_(
const vertex_t dependee_,
325 const std::string & category_,
326 const std::size_t depth_,
327 std::set<vertex_t> & visited_,
328 std::set<std::string> & dependers_)
const;
338 #endif // DATATOOLS_DEPENDENCY_GRAPH_H