/* 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 <initializer_list> #include <string> #include <utility> #include <vector> #include <cm/string_view> #include <cmext/string_view> 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; };