summaryrefslogtreecommitdiffstats
path: root/base/values.cc
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-18 02:16:59 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-18 02:16:59 +0000
commit16f47e08060635631f1ad2cbb30906beb1caffc3 (patch)
treef2e07ada71f47383cb8355091b0a92e090c8656e /base/values.cc
parent9fb09e0cb9a33db85884f3f81e406d12ad9f2b70 (diff)
downloadchromium_src-16f47e08060635631f1ad2cbb30906beb1caffc3.zip
chromium_src-16f47e08060635631f1ad2cbb30906beb1caffc3.tar.gz
chromium_src-16f47e08060635631f1ad2cbb30906beb1caffc3.tar.bz2
Made return types of various Value::DeepCopy() implementations more specific
Since C++ supports covariant return types, a subclass of Value can return its own pointer type for Value::DeepCopy(). Also made signatures of Value::Create*Value() more specific. Removed now-unnecessary casts. Added test for covariant return types. BUG=None TEST=Compile Review URL: http://codereview.chromium.org/6324004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71617 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/values.cc')
-rw-r--r--base/values.cc20
1 files changed, 10 insertions, 10 deletions
diff --git a/base/values.cc b/base/values.cc
index 3522569..a4a6ff4 100644
--- a/base/values.cc
+++ b/base/values.cc
@@ -70,27 +70,27 @@ Value* Value::CreateNullValue() {
}
// static
-Value* Value::CreateBooleanValue(bool in_value) {
+FundamentalValue* Value::CreateBooleanValue(bool in_value) {
return new FundamentalValue(in_value);
}
// static
-Value* Value::CreateIntegerValue(int in_value) {
+FundamentalValue* Value::CreateIntegerValue(int in_value) {
return new FundamentalValue(in_value);
}
// static
-Value* Value::CreateRealValue(double in_value) {
+FundamentalValue* Value::CreateRealValue(double in_value) {
return new FundamentalValue(in_value);
}
// static
-Value* Value::CreateStringValue(const std::string& in_value) {
+StringValue* Value::CreateStringValue(const std::string& in_value) {
return new StringValue(in_value);
}
// static
-Value* Value::CreateStringValue(const string16& in_value) {
+StringValue* Value::CreateStringValue(const string16& in_value) {
return new StringValue(in_value);
}
@@ -182,7 +182,7 @@ bool FundamentalValue::GetAsReal(double* out_value) const {
return (IsType(TYPE_REAL));
}
-Value* FundamentalValue::DeepCopy() const {
+FundamentalValue* FundamentalValue::DeepCopy() const {
switch (GetType()) {
case TYPE_BOOLEAN:
return CreateBooleanValue(boolean_value_);
@@ -250,7 +250,7 @@ bool StringValue::GetAsString(string16* out_value) const {
return true;
}
-Value* StringValue::DeepCopy() const {
+StringValue* StringValue::DeepCopy() const {
return CreateStringValue(value_);
}
@@ -288,7 +288,7 @@ BinaryValue* BinaryValue::CreateWithCopiedBuffer(const char* buffer,
return new BinaryValue(buffer_copy, size);
}
-Value* BinaryValue::DeepCopy() const {
+BinaryValue* BinaryValue::DeepCopy() const {
return CreateWithCopiedBuffer(buffer_, size_);
}
@@ -646,7 +646,7 @@ void DictionaryValue::MergeDictionary(const DictionaryValue* dictionary) {
}
}
-Value* DictionaryValue::DeepCopy() const {
+DictionaryValue* DictionaryValue::DeepCopy() const {
DictionaryValue* result = new DictionaryValue;
for (ValueMap::const_iterator current_entry(dictionary_.begin());
@@ -862,7 +862,7 @@ bool ListValue::GetAsList(ListValue** out_value) {
return true;
}
-Value* ListValue::DeepCopy() const {
+ListValue* ListValue::DeepCopy() const {
ListValue* result = new ListValue;
for (ValueVector::const_iterator i(list_.begin()); i != list_.end(); ++i)