aboutsummaryrefslogtreecommitdiff
path: root/contrib/kyua/engine/requirements.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/kyua/engine/requirements.hpp')
-rw-r--r--contrib/kyua/engine/requirements.hpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/contrib/kyua/engine/requirements.hpp b/contrib/kyua/engine/requirements.hpp
index a36a938b3034..92e80c5122aa 100644
--- a/contrib/kyua/engine/requirements.hpp
+++ b/contrib/kyua/engine/requirements.hpp
@@ -44,6 +44,32 @@ namespace engine {
std::string check_reqs(const model::metadata&, const utils::config::tree&,
const std::string&, const utils::fs::path&);
+/// Abstract interface of a requirement checker.
+class reqs_checker {
+public:
+ /// Constructor.
+ reqs_checker() {}
+
+ /// Destructor.
+ virtual ~reqs_checker() {}
+
+ /// Run the checker.
+ virtual std::string exec(const model::metadata&,
+ const utils::config::tree&,
+ const std::string&,
+ const utils::fs::path&) const = 0;
+};
+
+/// Register an extra requirement checker.
+///
+/// \param checker A requirement checker.
+void register_reqs_checker(const std::shared_ptr< reqs_checker > checker);
+
+/// Returns the list of registered extra requirement checkers.
+///
+/// \return A vector of pointers to extra requirement checkers.
+const std::vector< std::shared_ptr< reqs_checker > > reqs_checkers();
+
} // namespace engine