diff options
author | Stephen Kelly <steveire@gmail.com> | 2015-02-10 21:48:02 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2015-02-11 21:58:08 (GMT) |
commit | e21f7829a2891ce7599ade02d4fd9c193657069a (patch) | |
tree | 7b52d13a2b8c2e29155c8c5e4b2991a70697b455 /Source/cmTarget.cxx | |
parent | 559dc15589ad0b9a7bdaa62ac7552899993f6f0d (diff) | |
download | CMake-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.cxx | 27 |
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 << |