summaryrefslogtreecommitdiff
path: root/src/mongo/bson/bsonobjbuilder.h
diff options
context:
space:
mode:
authorBilly Donahue <billy.donahue@mongodb.com>2019-07-04 17:57:25 -0400
committerBilly Donahue <billy.donahue@mongodb.com>2019-07-09 14:32:01 -0400
commitf2bb23436a46afacfc8e3dc65fda743fafe6b2c3 (patch)
tree990d9667db82f124bde3392c0240220a3707cbe1 /src/mongo/bson/bsonobjbuilder.h
parenta7cb58fe04b1a13909e98829a9235eb4fa837e8c (diff)
downloadmongo-f2bb23436a46afacfc8e3dc65fda743fafe6b2c3.tar.gz
SERVER-42034 remove BSONObjBuilder::numStr
Callers are better with either DecimalCounter or std::to_string.
Diffstat (limited to 'src/mongo/bson/bsonobjbuilder.h')
-rw-r--r--src/mongo/bson/bsonobjbuilder.h26
1 files changed, 10 insertions, 16 deletions
diff --git a/src/mongo/bson/bsonobjbuilder.h b/src/mongo/bson/bsonobjbuilder.h
index 083d7580998..edd3c04ed77 100644
--- a/src/mongo/bson/bsonobjbuilder.h
+++ b/src/mongo/bson/bsonobjbuilder.h
@@ -674,14 +674,6 @@ public:
_doneCalled = true;
}
- static std::string numStr(int i) {
- if (i >= 0 && i < 100 && numStrsReady)
- return numStrs[i];
- StringBuilder o;
- o << i;
- return o.str();
- }
-
/** Stream oriented way to add field names and values. */
BSONObjBuilderValueStream& operator<<(StringData name) {
_s.endField(name);
@@ -765,9 +757,6 @@ private:
BSONObjBuilderValueStream _s;
BSONSizeTracker* _tracker;
bool _doneCalled;
-
- static const std::string numStrs[100]; // cache of 0 to 99 inclusive
- static bool numStrsReady; // for static init safety
};
class BSONArrayBuilder {
@@ -916,17 +905,22 @@ private:
template <class T>
inline BSONObjBuilder& BSONObjBuilder::append(StringData fieldName, const std::vector<T>& vals) {
BSONObjBuilder arrBuilder(subarrayStart(fieldName));
- for (unsigned int i = 0; i < vals.size(); ++i)
- arrBuilder.append(numStr(i), vals[i]);
+ DecimalCounter<size_t> n;
+ for (unsigned int i = 0; i < vals.size(); ++i) {
+ arrBuilder.append(StringData{n}, vals[i]);
+ ++n;
+ }
return *this;
}
template <class L>
inline BSONObjBuilder& _appendIt(BSONObjBuilder& _this, StringData fieldName, const L& vals) {
BSONObjBuilder arrBuilder;
- int n = 0;
- for (typename L::const_iterator i = vals.begin(); i != vals.end(); i++)
- arrBuilder.append(BSONObjBuilder::numStr(n++), *i);
+ DecimalCounter<size_t> n;
+ for (typename L::const_iterator i = vals.begin(); i != vals.end(); i++) {
+ arrBuilder.append(StringData{n}, *i);
+ ++n;
+ }
_this.appendArray(fieldName, arrBuilder.done());
return _this;
}