datadiode 2015-01-18 10:05:25 +01:00
parent 62ab94ddd3
commit c07ef37904
2 changed files with 10 additions and 4 deletions

View File

@ -240,8 +240,6 @@ Json::Value obj_value(Json::objectValue); // {}
Value& operator=(Value other);
/// Swap values.
/// \note Currently, comments are intentionally not swapped, for
/// both logic and efficiency.
void swap(Value& other);
ValueType type() const;
@ -444,6 +442,9 @@ private:
Value& resolveReference(const char* key, bool isStatic);
/// Swap values but leave comments and source offsets in place.
void swapPayload(Value& other);
#ifdef JSON_VALUE_USE_INTERNAL_MAP
inline bool isItemAvailable() const { return itemIsUsed_ == 0; }

View File

@ -406,11 +406,11 @@ Value::~Value() {
}
Value& Value::operator=(Value other) {
swap(other);
swapPayload(other);
return *this;
}
void Value::swap(Value& other) {
void Value::swapPayload(Value& other) {
ValueType temp = type_;
type_ = other.type_;
other.type_ = temp;
@ -418,6 +418,11 @@ void Value::swap(Value& other) {
int temp2 = allocated_;
allocated_ = other.allocated_;
other.allocated_ = temp2;
}
void Value::swap(Value& other) {
swapPayload(other);
std::swap(comments_, other.comments_);
std::swap(start_, other.start_);
std::swap(limit_, other.limit_);
}