/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include class cmSlnProjectEntry { public: cmSlnProjectEntry() = default; cmSlnProjectEntry(std::string guid, std::string name, std::string relativePath) : Guid(std::move(guid)) , Name(std::move(name)) , RelativePath(std::move(relativePath)) { } std::string GetGUID() const { return Guid; } std::string GetName() const { return Name; } std::string GetRelativePath() const { return RelativePath; } void AddProjectConfiguration(std::string const& solutionConfiguration, std::string const& projectConfiguration); std::string GetProjectConfiguration( std::string const& solutionConfiguration); private: std::string Guid, Name, RelativePath; std::map projectConfigurationMap; }; class cmSlnData { public: std::string GetVisualStudioVersion() const { return visualStudioVersion; } void SetVisualStudioVersion(std::string const& version) { visualStudioVersion = version; } std::string GetMinimumVisualStudioVersion() const { return minimumVisualStudioVersion; } void SetMinimumVisualStudioVersion(std::string const& version) { minimumVisualStudioVersion = version; } cm::optional GetProjectByGUID( std::string const& projectGUID) const; cm::optional GetProjectByName( std::string const& projectName) const; std::vector GetProjects() const; cmSlnProjectEntry* AddProject(std::string const& projectGUID, std::string const& projectName, std::string const& projectRelativePath); void AddConfiguration(std::string const& configuration) { solutionConfigurations.push_back(configuration); } std::string GetConfigurationTarget(std::string const& projectName, std::string const& solutionConfiguration, std::string const& platformName); private: std::string visualStudioVersion, minimumVisualStudioVersion; using ProjectStorage = std::map; ProjectStorage ProjectsByGUID; using ProjectStringIndex = std::map; ProjectStringIndex ProjectNameIndex; std::vector solutionConfigurations; };