Index: base/values.cc |
diff --git a/base/values.cc b/base/values.cc |
index 4553e68dc2d9d810a05f929b111ca683ecc61a40..35225698c54d56eb83be645256a80b04dabb0341 100644 |
--- a/base/values.cc |
+++ b/base/values.cc |
@@ -263,6 +263,12 @@ bool StringValue::Equals(const Value* other) const { |
///////////////////// BinaryValue //////////////////// |
+BinaryValue::~BinaryValue() { |
+ DCHECK(buffer_); |
+ if (buffer_) |
+ delete[] buffer_; |
+} |
+ |
// static |
BinaryValue* BinaryValue::Create(char* buffer, size_t size) { |
if (!buffer) |
@@ -282,20 +288,6 @@ BinaryValue* BinaryValue::CreateWithCopiedBuffer(const char* buffer, |
return new BinaryValue(buffer_copy, size); |
} |
- |
-BinaryValue::BinaryValue(char* buffer, size_t size) |
- : Value(TYPE_BINARY), |
- buffer_(buffer), |
- size_(size) { |
- DCHECK(buffer_); |
-} |
- |
-BinaryValue::~BinaryValue() { |
- DCHECK(buffer_); |
- if (buffer_) |
- delete[] buffer_; |
-} |
- |
Value* BinaryValue::DeepCopy() const { |
return CreateWithCopiedBuffer(buffer_, size_); |
} |
@@ -309,6 +301,13 @@ bool BinaryValue::Equals(const Value* other) const { |
return !memcmp(buffer_, other_binary->buffer_, size_); |
} |
+BinaryValue::BinaryValue(char* buffer, size_t size) |
+ : Value(TYPE_BINARY), |
+ buffer_(buffer), |
+ size_(size) { |
+ DCHECK(buffer_); |
+} |
+ |
///////////////////// DictionaryValue //////////////////// |
DictionaryValue::DictionaryValue() |
@@ -319,44 +318,6 @@ DictionaryValue::~DictionaryValue() { |
Clear(); |
} |
-Value* DictionaryValue::DeepCopy() const { |
- DictionaryValue* result = new DictionaryValue; |
- |
- for (ValueMap::const_iterator current_entry(dictionary_.begin()); |
- current_entry != dictionary_.end(); ++current_entry) { |
- result->SetWithoutPathExpansion(current_entry->first, |
- current_entry->second->DeepCopy()); |
- } |
- |
- return result; |
-} |
- |
-bool DictionaryValue::Equals(const Value* other) const { |
- if (other->GetType() != GetType()) |
- return false; |
- |
- const DictionaryValue* other_dict = |
- static_cast<const DictionaryValue*>(other); |
- key_iterator lhs_it(begin_keys()); |
- key_iterator rhs_it(other_dict->begin_keys()); |
- while (lhs_it != end_keys() && rhs_it != other_dict->end_keys()) { |
- Value* lhs; |
- Value* rhs; |
- if (*lhs_it != *rhs_it || |
- !GetWithoutPathExpansion(*lhs_it, &lhs) || |
- !other_dict->GetWithoutPathExpansion(*rhs_it, &rhs) || |
- !lhs->Equals(rhs)) { |
- return false; |
- } |
- ++lhs_it; |
- ++rhs_it; |
- } |
- if (lhs_it != end_keys() || rhs_it != other_dict->end_keys()) |
- return false; |
- |
- return true; |
-} |
- |
bool DictionaryValue::HasKey(const std::string& key) const { |
DCHECK(IsStringUTF8(key)); |
ValueMap::const_iterator current_entry = dictionary_.find(key); |
@@ -685,6 +646,44 @@ void DictionaryValue::MergeDictionary(const DictionaryValue* dictionary) { |
} |
} |
+Value* DictionaryValue::DeepCopy() const { |
+ DictionaryValue* result = new DictionaryValue; |
+ |
+ for (ValueMap::const_iterator current_entry(dictionary_.begin()); |
+ current_entry != dictionary_.end(); ++current_entry) { |
+ result->SetWithoutPathExpansion(current_entry->first, |
+ current_entry->second->DeepCopy()); |
+ } |
+ |
+ return result; |
+} |
+ |
+bool DictionaryValue::Equals(const Value* other) const { |
+ if (other->GetType() != GetType()) |
+ return false; |
+ |
+ const DictionaryValue* other_dict = |
+ static_cast<const DictionaryValue*>(other); |
+ key_iterator lhs_it(begin_keys()); |
+ key_iterator rhs_it(other_dict->begin_keys()); |
+ while (lhs_it != end_keys() && rhs_it != other_dict->end_keys()) { |
+ Value* lhs; |
+ Value* rhs; |
+ if (*lhs_it != *rhs_it || |
+ !GetWithoutPathExpansion(*lhs_it, &lhs) || |
+ !other_dict->GetWithoutPathExpansion(*rhs_it, &rhs) || |
+ !lhs->Equals(rhs)) { |
+ return false; |
+ } |
+ ++lhs_it; |
+ ++rhs_it; |
+ } |
+ if (lhs_it != end_keys() || rhs_it != other_dict->end_keys()) |
+ return false; |
+ |
+ return true; |
+} |
+ |
///////////////////// ListValue //////////////////// |
ListValue::ListValue() : Value(TYPE_LIST) { |