/*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2000-2013 Kitware, Inc., Insight Software Consortium Distributed under the OSI-approved BSD License (the "License"); see accompanying file Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ #ifndef cmVisualStudioSlnData_h #define cmVisualStudioSlnData_h #include "cmStandardIncludes.h" 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; } private: std::string Guid, Name, RelativePath; }; class cmSlnData { public: const cmSlnProjectEntry* GetProjectByGUID(const std::string& projectGUID) const; const cmSlnProjectEntry* GetProjectByName(const std::string& projectName) const; std::vector GetProjects() const; cmSlnProjectEntry* AddProject(const std::string& projectGUID, const std::string& projectName, const std::string& projectRelativePath); private: typedef std::map ProjectStorage; ProjectStorage ProjectsByGUID; typedef std::map ProjectStringIndex; ProjectStringIndex ProjectNameIndex; }; #endif