summaryrefslogtreecommitdiffstats
path: root/Source/cmSubcommandTable.h
diff options
context:
space:
mode:
authorRegina Pfeifer <regina@mailbox.org>2019-04-07 20:14:52 (GMT)
committerRegina Pfeifer <regina@mailbox.org>2019-08-06 15:21:52 (GMT)
commitb66b7464ab09420f150daaec7571da31dc361cc0 (patch)
tree016c83793728b8985db26c363871af229b024228 /Source/cmSubcommandTable.h
parent2b785875fbc9815b1fc528a90cf008a2b13f0084 (diff)
downloadCMake-b66b7464ab09420f150daaec7571da31dc361cc0.zip
CMake-b66b7464ab09420f150daaec7571da31dc361cc0.tar.gz
CMake-b66b7464ab09420f150daaec7571da31dc361cc0.tar.bz2
Introduce cmSubcommandTable
Diffstat (limited to 'Source/cmSubcommandTable.h')
-rw-r--r--Source/cmSubcommandTable.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/Source/cmSubcommandTable.h b/Source/cmSubcommandTable.h
new file mode 100644
index 0000000..21342bb
--- /dev/null
+++ b/Source/cmSubcommandTable.h
@@ -0,0 +1,36 @@
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing for details. */
+#ifndef cmSubcommandTable_h
+#define cmSubcommandTable_h
+
+#include "cmConfigure.h" // IWYU pragma: keep
+
+#include "cm_static_string_view.hxx"
+#include "cm_string_view.hxx"
+
+#include <initializer_list>
+#include <string>
+#include <utility>
+#include <vector>
+
+class cmExecutionStatus;
+
+class cmSubcommandTable
+{
+public:
+ using Command = bool (*)(std::vector<std::string> const&,
+ cmExecutionStatus&);
+
+ using Elem = std::pair<cm::string_view, Command>;
+ using InitElem = std::pair<cm::static_string_view, Command>;
+
+ cmSubcommandTable(std::initializer_list<InitElem> init);
+
+ bool operator()(cm::string_view key, std::vector<std::string> const& args,
+ cmExecutionStatus& status) const;
+
+private:
+ std::vector<Elem> Impl;
+};
+
+#endif