diff options
author | Jason Carey <jcarey@argv.me> | 2015-10-06 23:00:16 -0400 |
---|---|---|
committer | Jason Carey <jcarey@argv.me> | 2015-10-06 23:00:16 -0400 |
commit | f4cd4c9cec5e6e4c15ec48cc7c8f9366ba9cdf76 (patch) | |
tree | a997fed957969f0c4c32d46be025c0354e7a891e /src | |
parent | 43863d9b90ad0b5627fa7f3e9065333836ce120c (diff) | |
download | mongo-f4cd4c9cec5e6e4c15ec48cc7c8f9366ba9cdf76.tar.gz |
SERVER-19977 add move operators to jsstringwrapper
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/scripting/mozjs/jsstringwrapper.cpp | 14 | ||||
-rw-r--r-- | src/mongo/scripting/mozjs/jsstringwrapper.h | 10 |
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; |