Horizon
Loading...
Searching...
No Matches
graph.hpp
1#pragma once
2#include "util/uuid.hpp"
3#include <map>
4#include <set>
5#include <string>
6#include <vector>
7
8namespace horizon {
9
11public:
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
21std::set<UUID> uuids_from_missing(const std::set<std::pair<const PoolUpdateNode *, UUID>> &missing);
22
24public:
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
33private:
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