summaryrefslogtreecommitdiffstats
path: root/Source/cmTarget.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-02-10 21:48:02 (GMT)
committerStephen Kelly <steveire@gmail.com>2015-02-11 21:58:08 (GMT)
commite21f7829a2891ce7599ade02d4fd9c193657069a (patch)
tree7b52d13a2b8c2e29155c8c5e4b2991a70697b455 /Source/cmTarget.cxx
parent559dc15589ad0b9a7bdaa62ac7552899993f6f0d (diff)
downloadCMake-e21f7829a2891ce7599ade02d4fd9c193657069a.zip
CMake-e21f7829a2891ce7599ade02d4fd9c193657069a.tar.gz
CMake-e21f7829a2891ce7599ade02d4fd9c193657069a.tar.bz2
cmTarget: Use a sorted vector in place of a set.
The vector has a more easy-to-use API. Join the string with cmJoin, and avoid erasing from the container in the loop.
Diffstat (limited to 'Source/cmTarget.cxx')
-rw-r--r--Source/cmTarget.cxx27
1 files changed, 10 insertions, 17 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index f0bdea7..526a923 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -6687,40 +6687,33 @@ void cmTarget::CheckPropertyCompatibility(cmComputeLinkInformation *info,
if (!prop.empty())
{
- // Use a std::set to keep the error message sorted.
- std::set<std::string> props;
+ // Use a sorted std::vector to keep the error message sorted.
+ std::vector<std::string> props;
std::set<std::string>::const_iterator i = emittedBools.find(prop);
if (i != emittedBools.end())
{
- props.insert(strBool);
+ props.push_back(strBool);
}
i = emittedStrings.find(prop);
if (i != emittedStrings.end())
{
- props.insert(strString);
+ props.push_back(strString);
}
i = emittedMinNumbers.find(prop);
if (i != emittedMinNumbers.end())
{
- props.insert(strNumMin);
+ props.push_back(strNumMin);
}
i = emittedMaxNumbers.find(prop);
if (i != emittedMaxNumbers.end())
{
- props.insert(strNumMax);
+ props.push_back(strNumMax);
}
+ std::sort(props.begin(), props.end());
+
+ std::string propsString = cmJoin(cmRange(props).retreat(1), ", ");
+ propsString += " and the " + props.back();
- std::string propsString = *props.begin();
- props.erase(props.begin());
- while (props.size() > 1)
- {
- propsString += ", " + *props.begin();
- props.erase(props.begin());
- }
- if (props.size() == 1)
- {
- propsString += " and the " + *props.begin();
- }
std::ostringstream e;
e << "Property \"" << prop << "\" appears in both the "
<< propsString <<