/* 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 #include #include #include class cmSlnProjectEntry { public: cmSlnProjectEntry() {} cmSlnProjectEntry(const std::string& guid, const std::string& name, const std::string& relativePath) : Guid(guid) , Name(name) , RelativePath(relativePath) { } std::string GetGUID() const { return Guid; } std::string GetName() const { return Name; } std::string GetRelativePath() const { return RelativePath; } void AddProjectConfiguration(const std::string& solutionConfiguration, const std::string& projectConfiguration); std::string GetProjectConfiguration( const std::string& solutionConfiguration); private: std::string Guid, Name, RelativePath; std::map projectConfigurationMap; }; class cmSlnData { public: std::string GetVisualStudioVersion() const { return visualStudioVersion; } void SetVisualStudioVersion(const std::string& version) { visualStudioVersion = version; } std::string GetMinimumVisualStudioVersion() const { return minimumVisualStudioVersion; } void SetMinimumVisualStudioVersion(const std::string& version) { minimumVisualStudioVersion = version; } const cm::optional GetProjectByGUID( const std::string& projectGUID) const; const cm::optional GetProjectByName( const std::string& projectName) const; std::vector GetProjects() const; cmSlnProjectEntry* AddProject(const std::string& projectGUID, const std::string& projectName, const std::string& projectRelativePath); void AddConfiguration(const std::string& configuration) { solutionConfigurations.push_back(configuration); } std::string GetConfigurationTarget(const std::string& projectName, const std::string& solutionConfiguration, const std::string& platformName); private: std::string visualStudioVersion, minimumVisualStudioVersion; using ProjectStorage = std::map; ProjectStorage ProjectsByGUID; using ProjectStringIndex = std::map; ProjectStringIndex ProjectNameIndex; std::vector solutionConfigurations; };