summaryrefslogtreecommitdiff
path: root/Source/cmVisualStudioSlnData.cxx
blob: 82b4ee84f34b894d2cb75d2d2c8c52a0b1fc6696 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*============================================================================
  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.
============================================================================*/
#include "cmVisualStudioSlnData.h"

//----------------------------------------------------------------------------
const cmSlnProjectEntry*
cmSlnData::GetProjectByGUID(const std::string& projectGUID) const
{
  ProjectStorage::const_iterator it(ProjectsByGUID.find(projectGUID));
  if (it != ProjectsByGUID.end())
    return &it->second;
  else
    return NULL;
}

//----------------------------------------------------------------------------
const cmSlnProjectEntry*
cmSlnData::GetProjectByName(const std::string& projectName) const
{
  ProjectStringIndex::const_iterator it(ProjectNameIndex.find(projectName));
  if (it != ProjectNameIndex.end())
    return &it->second->second;
  else
    return NULL;
}

//----------------------------------------------------------------------------
std::vector<cmSlnProjectEntry> cmSlnData::GetProjects() const
{
  ProjectStringIndex::const_iterator it(this->ProjectNameIndex.begin()),
                                     itEnd(this->ProjectNameIndex.end());
  std::vector<cmSlnProjectEntry> result;
  for (; it != itEnd; ++it)
    result.push_back(it->second->second);
  return result;
}

//----------------------------------------------------------------------------
cmSlnProjectEntry* cmSlnData::AddProject(
  const std::string& projectGUID,
  const std::string& projectName,
  const std::string& projectRelativePath)
{
  ProjectStorage::iterator it(ProjectsByGUID.find(projectGUID));
  if (it != ProjectsByGUID.end())
    return NULL;
  it = ProjectsByGUID.insert(
    ProjectStorage::value_type(
      projectGUID,
      cmSlnProjectEntry(projectGUID, projectName, projectRelativePath))).first;
  ProjectNameIndex[projectName] = it;
  return &it->second;
}