Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(307)

Unified Diff: base/values.cc

Issue 148463003: libaddressinput - reduce number of copies in storage class by 2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/values.cc
diff --git a/base/values.cc b/base/values.cc
index 6068556bb3d1a4738b0048c118577a8670aef6be..4a7c8245042a602a6de0c8863640c72e8b7b0ac7 100644
--- a/base/values.cc
+++ b/base/values.cc
@@ -134,6 +134,10 @@ bool Value::GetAsString(string16* out_value) const {
return false;
}
+bool Value::GetAsStringValue(const StringValue** out_value) const {
+ return false;
+}
+
bool Value::GetAsList(ListValue** out_value) {
return false;
}
@@ -266,32 +270,40 @@ bool FundamentalValue::Equals(const Value* other) const {
StringValue::StringValue(const std::string& in_value)
: Value(TYPE_STRING),
- value_(in_value) {
+ value_(new std::string(in_value)) {
DCHECK(IsStringUTF8(in_value));
}
StringValue::StringValue(const string16& in_value)
: Value(TYPE_STRING),
- value_(UTF16ToUTF8(in_value)) {
-}
+ value_(new std::string(UTF16ToUTF8(in_value))) {}
-StringValue::~StringValue() {
-}
+StringValue::StringValue(scoped_ptr<std::string> in_value)
+ : Value(TYPE_STRING),
+ value_(in_value.Pass()) {}
+
+StringValue::~StringValue() {}
bool StringValue::GetAsString(std::string* out_value) const {
if (out_value)
- *out_value = value_;
+ *out_value = *value_;
return true;
}
bool StringValue::GetAsString(string16* out_value) const {
if (out_value)
- *out_value = UTF8ToUTF16(value_);
+ *out_value = UTF8ToUTF16(*value_);
+ return true;
+}
+
+bool StringValue::GetAsStringValue(const StringValue** out_value) const {
+ if (out_value)
+ *out_value = this;
return true;
}
StringValue* StringValue::DeepCopy() const {
- return CreateStringValue(value_);
+ return new StringValue(*value_);
}
bool StringValue::Equals(const Value* other) const {

Powered by Google App Engine
This is Rietveld 408576698