Horizon
graph.hpp
1 #pragma once
2 #include "util/uuid.hpp"
3 #include <map>
4 #include <set>
5 #include <string>
6 #include <vector>
7 
8 namespace horizon {
9 
11 public:
12  PoolUpdateNode(const UUID &uu, const std::string &filename, const std::set<UUID> &dependencies);
13 
14  const UUID uuid;
15  const std::string filename;
16 
17  std::set<UUID> dependencies;
18  std::set<class PoolUpdateNode *> dependants;
19 };
20 
21 std::set<UUID> uuids_from_missing(const std::set<std::pair<const PoolUpdateNode *, UUID>> &missing);
22 
24 public:
26  void add_node(const UUID &uu, const std::string &filename, const std::set<UUID> &dependencies);
27  void dump(const std::string &filename);
28  std::set<std::pair<const PoolUpdateNode *, UUID>> update_dependants();
29  std::set<const PoolUpdateNode *> get_not_visited(const std::set<UUID> &visited);
30 
31  const PoolUpdateNode &get_root() const;
32 
33 private:
34  std::map<UUID, PoolUpdateNode> nodes;
35  PoolUpdateNode root_node;
36 };
37 } // namespace horizon
Definition: graph.hpp:23
Definition: graph.hpp:10
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16