add move assignment operator for CZString and change copy assignment to const reference.

This commit is contained in:
Dhruv Paranjape 2017-07-08 17:47:13 +05:30
parent 23c44d9f9e
commit 0ba8bd73f5
2 changed files with 20 additions and 5 deletions

View File

@ -233,7 +233,12 @@ private:
CZString(CZString&& other);
#endif
~CZString();
CZString& operator=(CZString other);
CZString& operator=(const CZString& other);
#if JSON_HAS_RVALUE_REFERENCES
CZString& operator=(CZString&& other);
#endif
bool operator<(CZString const& other) const;
bool operator==(CZString const& other) const;
ArrayIndex index() const;
@ -447,7 +452,7 @@ Json::Value obj_value(Json::objectValue); // {}
/// Equivalent to jsonvalue[jsonvalue.size()] = value;
Value& append(const Value& value);
#ifdef JSON_HAS_RVALUE_REFERENCES
#if JSON_HAS_RVALUE_REFERENCES
Value& append(Value&& value);
#endif

View File

@ -292,11 +292,21 @@ void Value::CZString::swap(CZString& other) {
std::swap(index_, other.index_);
}
Value::CZString& Value::CZString::operator=(CZString other) {
swap(other);
Value::CZString& Value::CZString::operator=(const CZString& other) {
cstr_ = other.cstr_;
index_ = other.index_;
return *this;
}
#if JSON_HAS_RVALUE_REFERENCES
Value::CZString& Value::CZString::operator=(CZString&& other) {
cstr_ = other.cstr_;
index_ = other.index_;
other.cstr_ = nullptr;
return *this;
}
#endif
bool Value::CZString::operator<(const CZString& other) const {
if (!cstr_) return index_ < other.index_;
//return strcmp(cstr_, other.cstr_) < 0;
@ -1145,7 +1155,7 @@ Value const& Value::operator[](CppTL::ConstString const& key) const
Value& Value::append(const Value& value) { return (*this)[size()] = value; }
#ifdef JSON_HAS_RVALUE_REFERENCES
#if JSON_HAS_RVALUE_REFERENCES
Value& Value::append(Value&& value) { return (*this)[size()] = value; }
#endif