cmVisualStudioSlnData.cxx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. #include <cstddef>
  5. #include <utility>
  6. const cmSlnProjectEntry* cmSlnData::GetProjectByGUID(
  7. const std::string& projectGUID) const
  8. {
  9. ProjectStorage::const_iterator it(ProjectsByGUID.find(projectGUID));
  10. if (it != ProjectsByGUID.end())
  11. return &it->second;
  12. else
  13. return NULL;
  14. }
  15. const cmSlnProjectEntry* cmSlnData::GetProjectByName(
  16. const std::string& projectName) const
  17. {
  18. ProjectStringIndex::const_iterator it(ProjectNameIndex.find(projectName));
  19. if (it != ProjectNameIndex.end())
  20. return &it->second->second;
  21. else
  22. return NULL;
  23. }
  24. std::vector<cmSlnProjectEntry> cmSlnData::GetProjects() const
  25. {
  26. ProjectStringIndex::const_iterator it(this->ProjectNameIndex.begin()),
  27. itEnd(this->ProjectNameIndex.end());
  28. std::vector<cmSlnProjectEntry> result;
  29. for (; it != itEnd; ++it)
  30. result.push_back(it->second->second);
  31. return result;
  32. }
  33. cmSlnProjectEntry* cmSlnData::AddProject(
  34. const std::string& projectGUID, const std::string& projectName,
  35. const std::string& projectRelativePath)
  36. {
  37. ProjectStorage::iterator it(ProjectsByGUID.find(projectGUID));
  38. if (it != ProjectsByGUID.end())
  39. return NULL;
  40. it = ProjectsByGUID
  41. .insert(ProjectStorage::value_type(
  42. projectGUID,
  43. cmSlnProjectEntry(projectGUID, projectName, projectRelativePath)))
  44. .first;
  45. ProjectNameIndex[projectName] = it;
  46. return &it->second;
  47. }