9#ifndef DependencyResolver_H_
10#define DependencyResolver_H_
20 class CyclicDependencyException :
public std::runtime_error
23 explicit CyclicDependencyException(
const std::string& msg)
24 : std::runtime_error(msg) {}
27 class UnknownDependencyException :
public std::runtime_error
30 explicit UnknownDependencyException(
const std::string& msg)
31 : std::runtime_error(msg) {}
38 class DependencyResolver
41 DependencyResolver() =
default;
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_;
std::vector< std::string > resolve() const
Определения DependencyResolver.cc:48
void addGroup(const std::string &name, const std::set< std::string > &depends={})
Определения DependencyResolver.cc:15
bool hasGroup(const std::string &name) const
Определения DependencyResolver.cc:28
void clear()
Определения DependencyResolver.cc:33
std::set< std::string > getDependencies(const std::string &name) const
Определения DependencyResolver.cc:38
void addDependency(const std::string &group, const std::string &dependsOn)
Определения DependencyResolver.cc:20
std::vector< std::string > resolveReverse() const
Определения DependencyResolver.cc:79
Определения Calibration.h:27