summaryrefslogtreecommitdiffstats
path: root/Source/cmVisualStudioSlnData.h
diff options
context:
space:
mode:
authorPetr Kmoch <petr.kmoch@gmail.com>2013-01-08 13:10:42 (GMT)
committerBrad King <brad.king@kitware.com>2013-04-12 15:35:35 (GMT)
commitdf035e4825189c0d4d9519160d439e7f96a39086 (patch)
treeb2f13766a73b822af1ef3df4bd8b7cd4088aaae8 /Source/cmVisualStudioSlnData.h
parentde8be9ef7d019023099d28a1f797698ed7b598bd (diff)
downloadCMake-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.h58
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