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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/values.h" 5 #include "base/values.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <ostream> 10 #include <ostream>
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 } 127 }
128 128
129 bool Value::GetAsString(std::string* out_value) const { 129 bool Value::GetAsString(std::string* out_value) const {
130 return false; 130 return false;
131 } 131 }
132 132
133 bool Value::GetAsString(string16* out_value) const { 133 bool Value::GetAsString(string16* out_value) const {
134 return false; 134 return false;
135 } 135 }
136 136
137 bool Value::GetAsStringValue(const StringValue** out_value) const {
138 return false;
139 }
140
137 bool Value::GetAsList(ListValue** out_value) { 141 bool Value::GetAsList(ListValue** out_value) {
138 return false; 142 return false;
139 } 143 }
140 144
141 bool Value::GetAsList(const ListValue** out_value) const { 145 bool Value::GetAsList(const ListValue** out_value) const {
142 return false; 146 return false;
143 } 147 }
144 148
145 bool Value::GetAsDictionary(DictionaryValue** out_value) { 149 bool Value::GetAsDictionary(DictionaryValue** out_value) {
146 return false; 150 return false;
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 default: 263 default:
260 NOTREACHED(); 264 NOTREACHED();
261 return false; 265 return false;
262 } 266 }
263 } 267 }
264 268
265 ///////////////////// StringValue //////////////////// 269 ///////////////////// StringValue ////////////////////
266 270
267 StringValue::StringValue(const std::string& in_value) 271 StringValue::StringValue(const std::string& in_value)
268 : Value(TYPE_STRING), 272 : Value(TYPE_STRING),
269 value_(in_value) { 273 value_(new std::string(in_value)) {
270 DCHECK(IsStringUTF8(in_value)); 274 DCHECK(IsStringUTF8(in_value));
271 } 275 }
272 276
273 StringValue::StringValue(const string16& in_value) 277 StringValue::StringValue(const string16& in_value)
274 : Value(TYPE_STRING), 278 : Value(TYPE_STRING),
275 value_(UTF16ToUTF8(in_value)) { 279 value_(new std::string(UTF16ToUTF8(in_value))) {}
276 }
277 280
278 StringValue::~StringValue() { 281 StringValue::StringValue(scoped_ptr<std::string> in_value)
279 } 282 : Value(TYPE_STRING),
283 value_(in_value.Pass()) {}
284
285 StringValue::~StringValue() {}
280 286
281 bool StringValue::GetAsString(std::string* out_value) const { 287 bool StringValue::GetAsString(std::string* out_value) const {
282 if (out_value) 288 if (out_value)
283 *out_value = value_; 289 *out_value = *value_;
284 return true; 290 return true;
285 } 291 }
286 292
287 bool StringValue::GetAsString(string16* out_value) const { 293 bool StringValue::GetAsString(string16* out_value) const {
288 if (out_value) 294 if (out_value)
289 *out_value = UTF8ToUTF16(value_); 295 *out_value = UTF8ToUTF16(*value_);
296 return true;
297 }
298
299 bool StringValue::GetAsStringValue(const StringValue** out_value) const {
300 if (out_value)
301 *out_value = this;
290 return true; 302 return true;
291 } 303 }
292 304
293 StringValue* StringValue::DeepCopy() const { 305 StringValue* StringValue::DeepCopy() const {
294 return CreateStringValue(value_); 306 return new StringValue(*value_);
295 } 307 }
296 308
297 bool StringValue::Equals(const Value* other) const { 309 bool StringValue::Equals(const Value* other) const {
298 if (other->GetType() != GetType()) 310 if (other->GetType() != GetType())
299 return false; 311 return false;
300 std::string lhs, rhs; 312 std::string lhs, rhs;
301 return GetAsString(&lhs) && other->GetAsString(&rhs) && lhs == rhs; 313 return GetAsString(&lhs) && other->GetAsString(&rhs) && lhs == rhs;
302 } 314 }
303 315
304 ///////////////////// BinaryValue //////////////////// 316 ///////////////////// BinaryValue ////////////////////
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 1144
1133 std::ostream& operator<<(std::ostream& out, const Value& value) { 1145 std::ostream& operator<<(std::ostream& out, const Value& value) {
1134 std::string json; 1146 std::string json;
1135 JSONWriter::WriteWithOptions(&value, 1147 JSONWriter::WriteWithOptions(&value,
1136 JSONWriter::OPTIONS_PRETTY_PRINT, 1148 JSONWriter::OPTIONS_PRETTY_PRINT,
1137 &json); 1149 &json);
1138 return out << json; 1150 return out << json;
1139 } 1151 }
1140 1152
1141 } // namespace base 1153 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698