summaryrefslogtreecommitdiffstats
path: root/Source/cmDependencyProvider.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmDependencyProvider.h')
-rw-r--r--Source/cmDependencyProvider.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/Source/cmDependencyProvider.h b/Source/cmDependencyProvider.h
new file mode 100644
index 0000000..a6670b4
--- /dev/null
+++ b/Source/cmDependencyProvider.h
@@ -0,0 +1,38 @@
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+file Copyright.txt or https://cmake.org/licensing for details. */
+#pragma once
+
+#include "cmConfigure.h" // IWYU pragma: keep
+
+#include <algorithm>
+#include <string>
+#include <utility>
+#include <vector>
+
+class cmDependencyProvider
+{
+public:
+ enum class Method
+ {
+ FindPackage,
+ FetchContentMakeAvailableSerial,
+ };
+
+ cmDependencyProvider(std::string command, std::vector<Method> methods)
+ : Command(std::move(command))
+ , Methods(std::move(methods))
+ {
+ }
+
+ std::string const& GetCommand() const { return this->Command; }
+ std::vector<Method> const& GetMethods() const { return this->Methods; }
+ bool SupportsMethod(Method method) const
+ {
+ return std::find(this->Methods.begin(), this->Methods.end(), method) !=
+ this->Methods.end();
+ }
+
+private:
+ std::string Command;
+ std::vector<Method> Methods;
+};