cmVisualStudioSlnData.cxx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #include "cmVisualStudioSlnData.h"
  4. const cmSlnProjectEntry* cmSlnData::GetProjectByGUID(
  5. const std::string& projectGUID) const
  6. {
  7. ProjectStorage::const_iterator it(ProjectsByGUID.find(projectGUID));
  8. if (it != ProjectsByGUID.end())
  9. return &it->second;
  10. else
  11. return NULL;
  12. }
  13. const cmSlnProjectEntry* cmSlnData::GetProjectByName(
  14. const std::string& projectName) const
  15. {
  16. ProjectStringIndex::const_iterator it(ProjectNameIndex.find(projectName));
  17. if (it != ProjectNameIndex.end())
  18. return &it->second->second;
  19. else
  20. return NULL;
  21. }
  22. std::vector<cmSlnProjectEntry> cmSlnData::GetProjects() const
  23. {
  24. ProjectStringIndex::const_iterator it(this->ProjectNameIndex.begin()),
  25. itEnd(this->ProjectNameIndex.end());
  26. std::vector<cmSlnProjectEntry> result;
  27. for (; it != itEnd; ++it)
  28. result.push_back(it->second->second);
  29. return result;
  30. }
  31. cmSlnProjectEntry* cmSlnData::AddProject(
  32. const std::string& projectGUID, const std::string& projectName,
  33. const std::string& projectRelativePath)
  34. {
  35. ProjectStorage::iterator it(ProjectsByGUID.find(projectGUID));
  36. if (it != ProjectsByGUID.end())
  37. return NULL;
  38. it = ProjectsByGUID
  39. .insert(ProjectStorage::value_type(
  40. projectGUID,
  41. cmSlnProjectEntry(projectGUID, projectName, projectRelativePath)))
  42. .first;
  43. ProjectNameIndex[projectName] = it;
  44. return &it->second;
  45. }