LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
graph_algorithms.h
Go to the documentation of this file.
1 #ifndef art_Framework_Core_detail_graph_algorithms_h
2 #define art_Framework_Core_detail_graph_algorithms_h
3 
6 
7 #include <string>
8 #include <utility>
9 
10 namespace art::detail {
11 
12  std::pair<ModuleGraph, std::string> make_module_graph(
13  ModuleGraphInfoMap const& modInfos,
14  paths_to_modules_t const& trigger_paths,
15  configs_t const& end_path);
16 
17  // Make subgraphs - one per path
18  void make_trigger_path_subgraphs(ModuleGraphInfoMap const& modInfos,
19  paths_to_modules_t const& trigger_paths,
20  ModuleGraph& graph);
21 
22  void make_product_dependency_edges(ModuleGraphInfoMap const& modInfos,
23  ModuleGraph& graph);
24 
25  void make_path_ordering_edges(ModuleGraphInfoMap const& modInfos,
26  paths_to_modules_t const& paths,
27  ModuleGraph& graph);
28 
29  void make_synchronization_edges(ModuleGraphInfoMap const& modInfos,
30  paths_to_modules_t const& trigger_paths,
31  configs_t const& end_path,
32  ModuleGraph& graph);
33 
34  // Make edges for implicit module dependencies ("consumes" statements)
36  ModuleGraphInfoMap const& modInfos,
37  ModuleGraph const& graph);
38 
39  std::string verify_in_order_dependencies(
40  ModuleGraphInfoMap const& modules,
41  paths_to_modules_t const& trigger_paths);
42 
43  void print_module_graph(std::ostream& os,
44  ModuleGraphInfoMap const& modInfos,
45  ModuleGraph const& graph);
46 }
47 
48 #endif /* art_Framework_Core_detail_graph_algorithms_h */
49 
50 // Local Variables:
51 // mode: c++
52 // End:
std::string verify_in_order_dependencies(ModuleGraphInfoMap const &modules, paths_to_modules_t const &trigger_paths)
std::vector< WorkerInPath::ConfigInfo > configs_t
void print_module_graph(std::ostream &os, ModuleGraphInfoMap const &modInfos, ModuleGraph const &graph)
std::vector< std::pair< PathSpec, configs_t >> paths_to_modules_t
void make_synchronization_edges(ModuleGraphInfoMap const &modInfos, paths_to_modules_t const &trigger_paths, configs_t const &end_path, ModuleGraph &graph)
void make_trigger_path_subgraphs(ModuleGraphInfoMap const &modInfos, paths_to_modules_t const &trigger_paths, ModuleGraph &graph)
boost::subgraph< Graph > ModuleGraph
Definition: ModuleGraph.h:23
std::string verify_no_interpath_dependencies(ModuleGraphInfoMap const &modInfos, ModuleGraph const &graph)
void make_path_ordering_edges(ModuleGraphInfoMap const &modInfos, paths_to_modules_t const &paths, ModuleGraph &graph)
std::pair< ModuleGraph, std::string > make_module_graph(ModuleGraphInfoMap const &modInfos, paths_to_modules_t const &trigger_paths, configs_t const &end_path)
void make_product_dependency_edges(ModuleGraphInfoMap const &modInfos, ModuleGraph &graph)