diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-06-26 13:49:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-26 13:49:20 +0200 |
commit | fa3f70a8ce49b4c40eae80987975c4f66be0f357 (patch) | |
tree | 4bd5d99f12a3467154c45b3eb14f983c19461de1 | |
parent | c5248092fa13c86fe7ada994f59f238160c6586a (diff) | |
parent | 73c64607c12e977871aa13add999583bcd813a3a (diff) |
Merge pull request #13720 from vespa-engine/balder/cpp-modernization
Modernize to c++11 style loops.
6 files changed, 39 insertions, 55 deletions
diff --git a/storage/src/vespa/storage/distributor/activecopy.cpp b/storage/src/vespa/storage/distributor/activecopy.cpp index 4174ddb726f..3cb44515076 100644 --- a/storage/src/vespa/storage/distributor/activecopy.cpp +++ b/storage/src/vespa/storage/distributor/activecopy.cpp @@ -99,6 +99,7 @@ namespace { const std::vector<uint16_t>& idealState, std::vector<ActiveCopy>& result) { + result.reserve(nodeIndexes.size()); for (uint16_t nodeIndex : nodeIndexes) { result.emplace_back(nodeIndex, e, idealState); } @@ -126,18 +127,19 @@ ActiveCopy::calculate(const std::vector<uint16_t>& idealState, typedef std::vector<uint16_t> IndexList; std::vector<IndexList> groups; if (distribution.activePerGroup()) { - groups = distribution.splitNodesIntoLeafGroups(validNodesWithCopy); + groups = distribution.splitNodesIntoLeafGroups(std::move(validNodesWithCopy)); } else { - groups.push_back(validNodesWithCopy); + groups.push_back(std::move(validNodesWithCopy)); } std::vector<ActiveCopy> result; + result.reserve(groups.size()); for (uint32_t i=0; i<groups.size(); ++i) { std::vector<ActiveCopy> entries; buildNodeList(e, groups[i], idealState, entries); DEBUG(std::cerr << "Finding active for group " << entries << "\n"); auto best = std::min_element(entries.begin(), entries.end(), ActiveStateOrder()); DEBUG(std::cerr << "Best copy " << *best << "\n"); - result.push_back(ActiveCopy(*best)); + result.emplace_back(*best); } return ActiveList(std::move(result)); } @@ -165,8 +167,8 @@ ActiveList::print(std::ostream& out, bool verbose, bool ActiveList::contains(uint16_t node) const { - for (uint32_t i=0; i<_v.size(); ++i) { - if (node == _v[i]._nodeIndex) return true; + for (const auto & candadate : _v) { + if (node == candadate._nodeIndex) return true; } return false; } diff --git a/vdslib/src/vespa/vdslib/distribution/distribution.cpp b/vdslib/src/vespa/vdslib/distribution/distribution.cpp index 52d523071e6..46b85b87c5d 100644 --- a/vdslib/src/vespa/vdslib/distribution/distribution.cpp +++ b/vdslib/src/vespa/vdslib/distribution/distribution.cpp @@ -669,20 +669,19 @@ Distribution::splitNodesIntoLeafGroups(IndexList nodeList) const { std::vector<IndexList> result; std::map<uint16_t, IndexList> nodes; - for (uint32_t i=0, n=nodeList.size(); i<n; ++i) { - const Group* group(_nodeGraph->getGroupForNode(nodeList[i])); + for (auto node : nodeList) { + const Group* group(_nodeGraph->getGroupForNode(node)); if (group == nullptr) { LOGBP(warning, "Node %u is not assigned to a group. " - "Should not happen?", nodeList[i]); + "Should not happen?", node); } else { assert(group->isLeafGroup()); - nodes[group->getIndex()].push_back(nodeList[i]); + nodes[group->getIndex()].push_back(node); } } - for (std::map<uint16_t, IndexList>::const_iterator it(nodes.begin()); - it != nodes.end(); ++it) - { - result.push_back(it->second); + result.reserve(nodes.size()); + for (auto & node : nodes) { + result.emplace_back(std::move(node.second)); } return result; } diff --git a/vdslib/src/vespa/vdslib/distribution/group.cpp b/vdslib/src/vespa/vdslib/distribution/group.cpp index 91e27715911..abfea22416d 100644 --- a/vdslib/src/vespa/vdslib/distribution/group.cpp +++ b/vdslib/src/vespa/vdslib/distribution/group.cpp @@ -39,11 +39,9 @@ Group::Group(uint16_t index, vespalib::stringref name, Group::~Group() { - for (std::map<uint16_t, Group*>::iterator it = _subGroups.begin(); - it != _subGroups.end(); ++it) - { - delete it->second; - it->second = 0; + for (auto & subGroup : _subGroups) { + delete subGroup.second; + subGroup.second = nullptr; } } @@ -75,8 +73,8 @@ Group::print(std::ostream& out, bool verbose, } if (_distributionSpec.size() == 0) { out << ", nodes( "; - for (uint32_t i = 0; i < _nodes.size(); i++) { - out << _nodes[i] << " "; + for (auto node : _nodes) { + out << node << " "; } out << ")"; } @@ -88,10 +86,9 @@ Group::print(std::ostream& out, bool verbose, out << ") {"; if (_subGroups.size()>0) { - for (std::map<uint16_t, Group*>::const_iterator it = _subGroups.begin(); - it != _subGroups.end(); ++it) { + for (const auto & subGroup : _subGroups) { out << "\n" << indent << " "; - it->second->print(out, verbose, indent + " "); + subGroup.second->print(out, verbose, indent + " "); } } @@ -110,8 +107,7 @@ Group::addSubGroup(Group::UP group) throw vespalib::IllegalArgumentException( "Cannot add null group.", VESPA_STRLOC); } - std::map<uint16_t, Group*>::const_iterator it( - _subGroups.find(group->getIndex())); + auto it =_subGroups.find(group->getIndex()); if (it != _subGroups.end()) { throw vespalib::IllegalArgumentException( "Another subgroup with same index is already added.", @@ -148,32 +144,28 @@ Group::setNodes(const std::vector<uint16_t>& nodes) const Group* Group::getGroupForNode(uint16_t nodeIdx) const { - for (uint32_t i = 0; i < _nodes.size(); ++i) { - if (_nodes[i] == nodeIdx) { + for (auto node : _nodes) { + if (node == nodeIdx) { return this; } } - for (std::map<uint16_t, Group*>::const_iterator iter = _subGroups.begin(); - iter != _subGroups.end(); - ++iter) { - const Group* g = iter->second->getGroupForNode(nodeIdx); - if (g != NULL) { + for (const auto & subGroup : _subGroups) { + const Group* g = subGroup.second->getGroupForNode(nodeIdx); + if (g != nullptr) { return g; } } - return NULL; + return nullptr; } void Group::calculateDistributionHashValues(uint32_t parentHash) { _distributionHash = parentHash ^ (1664525L * _index + 1013904223L); - for (std::map<uint16_t, Group*>::iterator it = _subGroups.begin(); - it != _subGroups.end(); ++it) - { - it->second->calculateDistributionHashValues(_distributionHash); + for (const auto & subGroup : _subGroups) { + subGroup.second->calculateDistributionHashValues(_distributionHash); } } diff --git a/vdslib/src/vespa/vdslib/distribution/group.h b/vdslib/src/vespa/vdslib/distribution/group.h index 238a56d0295..d6af005130d 100644 --- a/vdslib/src/vespa/vdslib/distribution/group.h +++ b/vdslib/src/vespa/vdslib/distribution/group.h @@ -19,8 +19,7 @@ namespace vespalib { class asciistream; } -namespace storage { -namespace lib { +namespace storage::lib { class IdealGroup; class SystemState; @@ -101,6 +100,4 @@ public: vespalib::string getDistributionConfigHash() const; }; -} // lib -} // storage - +} diff --git a/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.cpp b/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.cpp index 99974225e9e..e52ad78c2ba 100644 --- a/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.cpp +++ b/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.cpp @@ -1,14 +1,12 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/vdslib/distribution/redundancygroupdistribution.h> - -#include <algorithm> -#include <boost/lexical_cast.hpp> +#include "redundancygroupdistribution.h" #include <vespa/vespalib/util/exceptions.h> #include <vespa/vespalib/text/stringtokenizer.h> +#include <boost/lexical_cast.hpp> +#include <algorithm> -namespace storage { -namespace lib { +namespace storage::lib { namespace { void verifyLegal(vespalib::StringTokenizer& st, @@ -144,6 +142,4 @@ RedundancyGroupDistribution::divideSpecifiedCopies( return redundancy; } -} // lib -} // storage - +} diff --git a/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h b/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h index 33f895cadf0..73013b6ce81 100644 --- a/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h +++ b/vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h @@ -11,8 +11,7 @@ #include <vector> #include <vespa/vespalib/stllike/string.h> -namespace storage { -namespace lib { +namespace storage::lib { class RedundancyGroupDistribution : public document::Printable { std::vector<uint16_t> _values; @@ -47,5 +46,4 @@ private: uint16_t redundancy, const std::vector<uint16_t>& maxValues); }; -} // lib -} // storage +} |