| /* 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 <string> | 
 | #include <vector> | 
 |  | 
 | #include "cmArgumentParser.h" | 
 | #include "cmArgumentParserTypes.h" | 
 |  | 
 | class cmInstallCommandArguments : public cmArgumentParser<void> | 
 | { | 
 | public: | 
 |   cmInstallCommandArguments(std::string defaultComponent); | 
 |   void SetGenericArguments(cmInstallCommandArguments* args) | 
 |   { | 
 |     this->GenericArguments = args; | 
 |   } | 
 |  | 
 |   // Compute destination path.and check permissions | 
 |   bool Finalize(); | 
 |  | 
 |   const std::string& GetDestination() const; | 
 |   const std::string& GetComponent() const; | 
 |   const std::string& GetNamelinkComponent() const; | 
 |   bool GetExcludeFromAll() const; | 
 |   const std::string& GetRename() const; | 
 |   const std::string& GetPermissions() const; | 
 |   const std::vector<std::string>& GetConfigurations() const; | 
 |   bool GetOptional() const; | 
 |   bool GetNamelinkOnly() const; | 
 |   bool GetNamelinkSkip() const; | 
 |   bool HasNamelinkComponent() const; | 
 |   const std::string& GetType() const; | 
 |  | 
 |   const std::string& GetDefaultComponent() const; | 
 |  | 
 |   static bool CheckPermissions(const std::string& onePerm, std::string& perm); | 
 |  | 
 | private: | 
 |   std::string Destination; | 
 |   std::string Component; | 
 |   std::string NamelinkComponent; | 
 |   bool ExcludeFromAll = false; | 
 |   std::string Rename; | 
 |   ArgumentParser::MaybeEmpty<std::vector<std::string>> Permissions; | 
 |   ArgumentParser::MaybeEmpty<std::vector<std::string>> Configurations; | 
 |   bool Optional = false; | 
 |   bool NamelinkOnly = false; | 
 |   bool NamelinkSkip = false; | 
 |   std::string Type; | 
 |  | 
 |   std::string DestinationString; | 
 |   std::string PermissionsString; | 
 |  | 
 |   cmInstallCommandArguments* GenericArguments = nullptr; | 
 |   static const char* PermissionsTable[]; | 
 |   static const std::string EmptyString; | 
 |   std::string DefaultComponentName; | 
 |   bool CheckPermissions(); | 
 | }; | 
 |  | 
 | class cmInstallCommandIncludesArgument | 
 | { | 
 | public: | 
 |   cmInstallCommandIncludesArgument(); | 
 |   void Parse(const std::vector<std::string>* args, | 
 |              std::vector<std::string>* unconsumedArgs); | 
 |  | 
 |   const std::vector<std::string>& GetIncludeDirs() const; | 
 |  | 
 | private: | 
 |   std::vector<std::string> IncludeDirs; | 
 | }; | 
 |  | 
 | class cmInstallCommandFileSetArguments : public cmInstallCommandArguments | 
 | { | 
 | public: | 
 |   cmInstallCommandFileSetArguments(std::string defaultComponent); | 
 |  | 
 |   void Parse(std::vector<std::string> args, | 
 |              std::vector<std::string>* unconsumedArgs); | 
 |  | 
 |   const std::string& GetFileSet() const { return this->FileSet; } | 
 |  | 
 | private: | 
 |   std::string FileSet; | 
 | }; |