summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Carey <jcarey@argv.me>2015-10-06 23:00:16 -0400
committerJason Carey <jcarey@argv.me>2015-10-06 23:00:16 -0400
commitf4cd4c9cec5e6e4c15ec48cc7c8f9366ba9cdf76 (patch)
treea997fed957969f0c4c32d46be025c0354e7a891e /src
parent43863d9b90ad0b5627fa7f3e9065333836ce120c (diff)
downloadmongo-f4cd4c9cec5e6e4c15ec48cc7c8f9366ba9cdf76.tar.gz
SERVER-19977 add move operators to jsstringwrapper
Diffstat (limited to 'src')
-rw-r--r--src/mongo/scripting/mozjs/jsstringwrapper.cpp14
-rw-r--r--src/mongo/scripting/mozjs/jsstringwrapper.h10
2 files changed, 24 insertions, 0 deletions
diff --git a/src/mongo/scripting/mozjs/jsstringwrapper.cpp b/src/mongo/scripting/mozjs/jsstringwrapper.cpp
index 2732c98607b..efc72041f85 100644
--- a/src/mongo/scripting/mozjs/jsstringwrapper.cpp
+++ b/src/mongo/scripting/mozjs/jsstringwrapper.cpp
@@ -72,6 +72,20 @@ JSStringWrapper::JSStringWrapper(JSContext* cx, JSString* str) : _isSet(true) {
out[_length] = '\0';
}
+#if defined(_MSC_VER) && _MSC_VER < 1900
+JSStringWrapper::JSStringWrapper(JSStringWrapper&& other) {
+ *this = std::move(other);
+}
+
+JSStringWrapper& JSStringWrapper::operator=(JSStringWrapper&& other) {
+ _str = std::move(other._str);
+ _length = other._length;
+ std::memcpy(_buf, other._buf, sizeof(_buf));
+ _isSet = other._isSet;
+ return *this;
+}
+#endif
+
StringData JSStringWrapper::toStringData() const {
invariant(_isSet);
return StringData(_str ? _str.get() : _buf, _length);
diff --git a/src/mongo/scripting/mozjs/jsstringwrapper.h b/src/mongo/scripting/mozjs/jsstringwrapper.h
index d42344445b3..a0c5a85254e 100644
--- a/src/mongo/scripting/mozjs/jsstringwrapper.h
+++ b/src/mongo/scripting/mozjs/jsstringwrapper.h
@@ -48,6 +48,16 @@ public:
JSStringWrapper(JSContext* cx, JSString* str);
JSStringWrapper(std::int32_t val);
+#if defined(_MSC_VER) && _MSC_VER < 1900
+ JSStringWrapper(JSStringWrapper&&);
+
+ JSStringWrapper& operator=(JSStringWrapper&&);
+#else
+ JSStringWrapper(JSStringWrapper&&) = default;
+
+ JSStringWrapper& operator=(JSStringWrapper&&) = default;
+#endif
+
StringData toStringData() const;
std::string toString() const;