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 
22 public:
24  void add_node(const UUID &uu, const std::string &filename, const std::set<UUID> &dependencies);
25  void dump(const std::string &filename);
26  std::set<std::pair<const PoolUpdateNode *, UUID>> update_dependants();
27  std::set<const PoolUpdateNode *> get_not_visited(const std::set<UUID> &visited);
28 
29  const PoolUpdateNode &get_root() const;
30 
31 private:
32  std::map<UUID, PoolUpdateNode> nodes;
33  PoolUpdateNode root_node;
34 };
35 } // namespace horizon
horizon::PoolUpdateGraph
Definition: graph.hpp:21
horizon::UUID
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
horizon::PoolUpdateNode
Definition: graph.hpp:10