aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-06-26 13:49:20 +0200
committerGitHub <noreply@github.com>2020-06-26 13:49:20 +0200
commitfa3f70a8ce49b4c40eae80987975c4f66be0f357 (patch)
tree4bd5d99f12a3467154c45b3eb14f983c19461de1
parentc5248092fa13c86fe7ada994f59f238160c6586a (diff)
parent73c64607c12e977871aa13add999583bcd813a3a (diff)
Merge pull request #13720 from vespa-engine/balder/cpp-modernization
Modernize to c++11 style loops.
-rw-r--r--storage/src/vespa/storage/distributor/activecopy.cpp12
-rw-r--r--vdslib/src/vespa/vdslib/distribution/distribution.cpp15
-rw-r--r--vdslib/src/vespa/vdslib/distribution/group.cpp40
-rw-r--r--vdslib/src/vespa/vdslib/distribution/group.h7
-rw-r--r--vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.cpp14
-rw-r--r--vdslib/src/vespa/vdslib/distribution/redundancygroupdistribution.h6
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
+}