diff options
author | Petr Kmoch <petr.kmoch@gmail.com> | 2013-01-08 13:10:42 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-04-12 15:35:35 (GMT) |
commit | df035e4825189c0d4d9519160d439e7f96a39086 (patch) | |
tree | b2f13766a73b822af1ef3df4bd8b7cd4088aaae8 /Source/cmVisualStudioSlnData.h | |
parent | de8be9ef7d019023099d28a1f797698ed7b598bd (diff) | |
download | CMake-df035e4825189c0d4d9519160d439e7f96a39086.zip CMake-df035e4825189c0d4d9519160d439e7f96a39086.tar.gz CMake-df035e4825189c0d4d9519160d439e7f96a39086.tar.bz2 |
VS: Create parser for Visual Studio .sln files
Create class cmVisualStudioSlnParser as a generic parser for Visual
Studio .sln files. Implement minimum functionality but keep class
extensible. Add tests for the class.
Diffstat (limited to 'Source/cmVisualStudioSlnData.h')
-rw-r--r-- | Source/cmVisualStudioSlnData.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/Source/cmVisualStudioSlnData.h b/Source/cmVisualStudioSlnData.h new file mode 100644 index 0000000..ec128cf --- /dev/null +++ b/Source/cmVisualStudioSlnData.h @@ -0,0 +1,58 @@ +/*============================================================================ + 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<cmSlnProjectEntry> GetProjects() const; + + cmSlnProjectEntry* AddProject(const std::string& projectGUID, + const std::string& projectName, + const std::string& projectRelativePath); + +private: + typedef std::map<std::string, cmSlnProjectEntry> ProjectStorage; + ProjectStorage ProjectsByGUID; + typedef std::map<std::string, ProjectStorage::iterator> ProjectStringIndex; + ProjectStringIndex ProjectNameIndex; +}; + +#endif |