diff options
author | Regina Pfeifer <regina@mailbox.org> | 2019-04-07 20:14:52 (GMT) |
---|---|---|
committer | Regina Pfeifer <regina@mailbox.org> | 2019-08-06 15:21:52 (GMT) |
commit | b66b7464ab09420f150daaec7571da31dc361cc0 (patch) | |
tree | 016c83793728b8985db26c363871af229b024228 /Source/cmSubcommandTable.h | |
parent | 2b785875fbc9815b1fc528a90cf008a2b13f0084 (diff) | |
download | CMake-b66b7464ab09420f150daaec7571da31dc361cc0.zip CMake-b66b7464ab09420f150daaec7571da31dc361cc0.tar.gz CMake-b66b7464ab09420f150daaec7571da31dc361cc0.tar.bz2 |
Introduce cmSubcommandTable
Diffstat (limited to 'Source/cmSubcommandTable.h')
-rw-r--r-- | Source/cmSubcommandTable.h | 36 |
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 |