9#ifndef DependencyResolver_H_
10#define DependencyResolver_H_
24 : std::runtime_error(msg) {}
31 : std::runtime_error(msg) {}
44 void addGroup(
const std::string& name,
const std::set<std::string>& depends = {});
47 void addDependency(
const std::string& group,
const std::string& dependsOn);
50 bool hasGroup(
const std::string& name)
const;
61 std::vector<std::string>
resolve()
const;
76 std::set<std::string> depends;
79 enum class VisitState { White, Gray, Black };
81 void dfs(
const std::string& name,
82 std::map<std::string, VisitState>& visited,
83 std::vector<std::string>& result)
const;
85 std::map<std::string, Node> nodes_;
Definition DependencyResolver.h:21
Definition DependencyResolver.h:39
std::vector< std::string > resolve() const
Definition DependencyResolver.cc:48
void addGroup(const std::string &name, const std::set< std::string > &depends={})
Definition DependencyResolver.cc:15
bool hasGroup(const std::string &name) const
Definition DependencyResolver.cc:28
void clear()
Definition DependencyResolver.cc:33
std::set< std::string > getDependencies(const std::string &name) const
Definition DependencyResolver.cc:38
void addDependency(const std::string &group, const std::string &dependsOn)
Definition DependencyResolver.cc:20
std::vector< std::string > resolveReverse() const
Definition DependencyResolver.cc:79
Definition DependencyResolver.h:28
Definition AccessConfig.h:30