summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMathias Stearn <mathias@10gen.com>2015-04-24 19:00:39 -0400
committerMathias Stearn <mathias@10gen.com>2015-05-04 19:30:07 -0400
commita7cc663e53d907f3c5998748770793ade95bdaa1 (patch)
treef5878842d9a615390cdcdb97d7f2d0da94dfb48c /src
parent50922d9f626758855326f6b5a06e940269189e11 (diff)
downloadmongo-a7cc663e53d907f3c5998748770793ade95bdaa1.tar.gz
SERVER-18204 Remove Value::consume()
It was a temporary stopgap until we were on C++11 and could std::move vectors. We now live in that world.
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/pipeline/accumulator_add_to_set.cpp3
-rw-r--r--src/mongo/db/pipeline/dependencies.cpp2
-rw-r--r--src/mongo/db/pipeline/document.h2
-rw-r--r--src/mongo/db/pipeline/document_source_group.cpp4
-rw-r--r--src/mongo/db/pipeline/document_source_match.cpp6
-rw-r--r--src/mongo/db/pipeline/document_source_redact.cpp2
-rw-r--r--src/mongo/db/pipeline/document_source_sort.cpp2
-rw-r--r--src/mongo/db/pipeline/expression.cpp16
-rw-r--r--src/mongo/db/pipeline/value.cpp2
-rw-r--r--src/mongo/db/pipeline/value.h16
-rw-r--r--src/mongo/db/pipeline/value_internal.h2
11 files changed, 22 insertions, 35 deletions
diff --git a/src/mongo/db/pipeline/accumulator_add_to_set.cpp b/src/mongo/db/pipeline/accumulator_add_to_set.cpp
index a15ac08d831..bd151964ffa 100644
--- a/src/mongo/db/pipeline/accumulator_add_to_set.cpp
+++ b/src/mongo/db/pipeline/accumulator_add_to_set.cpp
@@ -64,8 +64,7 @@ namespace mongo {
}
Value AccumulatorAddToSet::getValue(bool toBeMerged) const {
- vector<Value> valVec(set.begin(), set.end());
- return Value::consume(valVec);
+ return Value(vector<Value>(set.begin(), set.end()));
}
AccumulatorAddToSet::AccumulatorAddToSet() {
diff --git a/src/mongo/db/pipeline/dependencies.cpp b/src/mongo/db/pipeline/dependencies.cpp
index dc28ee18ebd..128d46bd703 100644
--- a/src/mongo/db/pipeline/dependencies.cpp
+++ b/src/mongo/db/pipeline/dependencies.cpp
@@ -136,7 +136,7 @@ namespace {
}
}
- return Value::consume(values);
+ return Value(std::move(values));
}
// Handles object-typed values including the top-level for ParsedDeps::extractFields
diff --git a/src/mongo/db/pipeline/document.h b/src/mongo/db/pipeline/document.h
index d86bd870e91..10d03ae8d2d 100644
--- a/src/mongo/db/pipeline/document.h
+++ b/src/mongo/db/pipeline/document.h
@@ -541,7 +541,7 @@ namespace mongo {
return *this << Value(val);
}
- Value done() { return Value::consume(_array); }
+ Value done() { return Value(std::move(_array)); }
private:
std::vector<Value> _array;
diff --git a/src/mongo/db/pipeline/document_source_group.cpp b/src/mongo/db/pipeline/document_source_group.cpp
index 94268d6f401..c4cdbd830dd 100644
--- a/src/mongo/db/pipeline/document_source_group.cpp
+++ b/src/mongo/db/pipeline/document_source_group.cpp
@@ -492,7 +492,7 @@ namespace mongo {
for (size_t j=0; j < ptrs[i]->second.size(); j++) {
accums.push_back(ptrs[i]->second[j]->getValue(/*toBeMerged=*/true));
}
- writer.addAlreadySorted(ptrs[i]->first, Value::consume(accums));
+ writer.addAlreadySorted(ptrs[i]->first, Value(std::move(accums)));
}
break;
}
@@ -547,7 +547,7 @@ namespace mongo {
for (size_t i = 0; i < _idExpressions.size(); i++) {
vals.push_back(_idExpressions[i]->evaluate(vars));
}
- return Value::consume(vals);
+ return Value(std::move(vals));
}
Value DocumentSourceGroup::expandId(const Value& val) {
diff --git a/src/mongo/db/pipeline/document_source_match.cpp b/src/mongo/db/pipeline/document_source_match.cpp
index 97238d491b4..ab2784acb97 100644
--- a/src/mongo/db/pipeline/document_source_match.cpp
+++ b/src/mongo/db/pipeline/document_source_match.cpp
@@ -193,7 +193,7 @@ namespace {
}
}
if (!matches.empty())
- output[field.fieldNameStringData()] = Value::consume(matches);
+ output[field.fieldNameStringData()] = Value(std::move(matches));
break;
}
@@ -249,7 +249,7 @@ namespace {
}
if (!okClauses.empty())
- output["$or"] = Value::consume(okClauses);
+ output["$or"] = Value(std::move(okClauses));
}
else if (str::equals(field.fieldName(), "$and")) {
// $and can include subset of elements (like $all).
@@ -260,7 +260,7 @@ namespace {
okClauses.push_back(Value(clause));
}
if (!okClauses.empty())
- output["$and"] = Value::consume(okClauses);
+ output["$and"] = Value(std::move(okClauses));
}
continue;
diff --git a/src/mongo/db/pipeline/document_source_redact.cpp b/src/mongo/db/pipeline/document_source_redact.cpp
index 9447a9e4fa2..e83a1583b9f 100644
--- a/src/mongo/db/pipeline/document_source_redact.cpp
+++ b/src/mongo/db/pipeline/document_source_redact.cpp
@@ -97,7 +97,7 @@ namespace mongo {
newArr.push_back(arr[i]);
}
}
- return Value::consume(newArr);
+ return Value(std::move(newArr));
}
else {
return in;
diff --git a/src/mongo/db/pipeline/document_source_sort.cpp b/src/mongo/db/pipeline/document_source_sort.cpp
index 9768a44b84d..95abf93400b 100644
--- a/src/mongo/db/pipeline/document_source_sort.cpp
+++ b/src/mongo/db/pipeline/document_source_sort.cpp
@@ -311,7 +311,7 @@ namespace mongo {
for (size_t i=0; i < vSortKey.size(); i++) {
keys.push_back(vSortKey[i]->evaluate(&vars));
}
- return Value::consume(keys);
+ return Value(std::move(keys));
}
int DocumentSourceSort::compare(const Value& lhs, const Value& rhs) const {
diff --git a/src/mongo/db/pipeline/expression.cpp b/src/mongo/db/pipeline/expression.cpp
index 8ea1f6b0b9a..4da7eb65e01 100644
--- a/src/mongo/db/pipeline/expression.cpp
+++ b/src/mongo/db/pipeline/expression.cpp
@@ -1213,7 +1213,7 @@ namespace {
result.push_back(doc.freezeToValue());
}
- out.addField(field.first, Value::consume(result));
+ out.addField(field.first, Value(std::move(result)));
}
else {
verify( false );
@@ -1421,7 +1421,7 @@ namespace {
result.push_back(nested);
}
- return Value::consume(result);
+ return Value(std::move(result));
}
Value ExpressionFieldPath::evaluatePath(size_t index, const Document& input) const {
// Note this function is very hot so it is important that is is well optimized.
@@ -1681,7 +1681,7 @@ namespace {
output.push_back(toInsert);
}
- return Value::consume(output);
+ return Value(std::move(output));
}
void ExpressionMap::addDependencies(DepsTracker* deps, vector<string>* path) const {
@@ -2120,7 +2120,7 @@ namespace {
returnVec.push_back(*it);
}
}
- return Value::consume(returnVec);
+ return Value(std::move(returnVec));
}
REGISTER_EXPRESSION("$setDifference", ExpressionSetDifference::parse);
@@ -2206,9 +2206,8 @@ namespace {
break;
}
}
- vector<Value> result = vector<Value>(currentIntersection.begin(),
- currentIntersection.end());
- return Value::consume(result);
+ return Value(vector<Value>(currentIntersection.begin(),
+ currentIntersection.end()));
}
REGISTER_EXPRESSION("$setIntersection", ExpressionSetIntersection::parse);
@@ -2315,8 +2314,7 @@ namespace {
unionedSet.insert(newEntries.getArray().begin(), newEntries.getArray().end());
}
- vector<Value> result = vector<Value>(unionedSet.begin(), unionedSet.end());
- return Value::consume(result);
+ return Value(vector<Value>(unionedSet.begin(), unionedSet.end()));
}
REGISTER_EXPRESSION("$setUnion", ExpressionSetUnion::parse);
diff --git a/src/mongo/db/pipeline/value.cpp b/src/mongo/db/pipeline/value.cpp
index 8ef22166e84..b156d290613 100644
--- a/src/mongo/db/pipeline/value.cpp
+++ b/src/mongo/db/pipeline/value.cpp
@@ -1066,7 +1066,7 @@ namespace mongo {
array.reserve(numElems);
for (int i = 0; i < numElems; i++)
array.push_back(deserializeForSorter(buf, settings));
- return Value::consume(array);
+ return Value(std::move(array));
}
}
verify(false);
diff --git a/src/mongo/db/pipeline/value.h b/src/mongo/db/pipeline/value.h
index 4e30c30564d..c79a02ec972 100644
--- a/src/mongo/db/pipeline/value.h
+++ b/src/mongo/db/pipeline/value.h
@@ -74,13 +74,13 @@ namespace mongo {
explicit Value(double value) : _storage(NumberDouble, value) {}
explicit Value(const Timestamp& value) : _storage(bsonTimestamp, value) {}
explicit Value(const OID& value) : _storage(jstOID, value) {}
- explicit Value(StringData value) : _storage(String, value) {}
- explicit Value(const std::string& value) : _storage(String, StringData(value)) {}
+ explicit Value(StringData value) : _storage(String, value) {}
+ explicit Value(const std::string& value) : _storage(String, StringData(value)) {}
explicit Value(const char* value) : _storage(String, StringData(value)) {}
explicit Value(const Document& doc) : _storage(Object, doc) {}
explicit Value(const BSONObj& obj);
explicit Value(const BSONArray& arr);
- explicit Value(const std::vector<Value>& vec) : _storage(Array, new RCVector(vec)) {}
+ explicit Value(std::vector<Value> vec) : _storage(Array, new RCVector(std::move(vec))) {}
explicit Value(const BSONBinData& bd) : _storage(BinData, bd) {}
explicit Value(const BSONRegEx& re) : _storage(RegEx, re) {}
explicit Value(const BSONCodeWScope& cws) : _storage(CodeWScope, cws) {}
@@ -107,16 +107,6 @@ namespace mongo {
*/
static Value createIntOrLong(long long value);
- /** Construct an Array-typed Value from consumed without copying the vector.
- * consumed is replaced with an empty vector.
- * In C++11 this would be spelled Value(std::move(consumed)).
- */
- static Value consume(std::vector<Value>& consumed) {
- RCVector* vec = new RCVector();
- std::swap(vec->vec, consumed);
- return Value(ValueStorage(Array, vec));
- }
-
/** A "missing" value indicates the lack of a Value.
* This is similar to undefined/null but should not appear in output to BSON.
* Missing Values are returned by Document when accessing non-existent fields.
diff --git a/src/mongo/db/pipeline/value_internal.h b/src/mongo/db/pipeline/value_internal.h
index 834c2e7d1d6..6cb31c8f635 100644
--- a/src/mongo/db/pipeline/value_internal.h
+++ b/src/mongo/db/pipeline/value_internal.h
@@ -50,7 +50,7 @@ namespace mongo {
class RCVector : public RefCountable {
public:
RCVector() {}
- RCVector(const std::vector<Value>& v) :vec(v) {}
+ RCVector(std::vector<Value> v) :vec(std::move(v)) {}
std::vector<Value> vec;
};