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

Unified Diff: base/values.cc

Issue 7649006: more changes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix another typo Created 9 years, 4 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
« no previous file with comments | « base/values.h ('k') | base/values_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/values.cc
diff --git a/base/values.cc b/base/values.cc
index 7a364bd8ff0f14402dac1ff80b5f6b72b656a9d2..9ce5fd165ed9f6e1da32269ac4819ea67a295107 100644
--- a/base/values.cc
+++ b/base/values.cc
@@ -57,43 +57,32 @@ Value* CopyWithoutEmptyChildren(Value* node) {
}
}
-} // namespace
-
-namespace base {
+class BASE_EXPORT NullValue : public Value {
+ public:
+ static Value* New();
-///////////////////// Value ////////////////////
+ private:
+ NullValue();
-Value::~Value() {
-}
+ DISALLOW_COPY_AND_ASSIGN(NullValue);
+};
// static
-Value* Value::CreateNullValue() {
- return new Value(TYPE_NULL);
+Value* NullValue::New() {
+ return new NullValue();
}
-// static
-FundamentalValue* Value::CreateBooleanValue(bool in_value) {
- return new FundamentalValue(in_value);
+NullValue::NullValue()
+ : Value(TYPE_NULL) {
}
-// static
-FundamentalValue* Value::CreateIntegerValue(int in_value) {
- return new FundamentalValue(in_value);
-}
+} // namespace
-// static
-FundamentalValue* Value::CreateDoubleValue(double in_value) {
- return new FundamentalValue(in_value);
-}
+namespace base {
-// static
-StringValue* Value::CreateStringValue(const std::string& in_value) {
- return new StringValue(in_value);
-}
+// Value -----------------------------------------------------------------------
-// static
-StringValue* Value::CreateStringValue(const string16& in_value) {
- return new StringValue(in_value);
+Value::~Value() {
}
bool Value::GetAsBoolean(bool* out_value) const {
@@ -128,7 +117,7 @@ Value* Value::DeepCopy() const {
// This method should only be getting called for null Values--all subclasses
// need to provide their own implementation;.
DCHECK(IsType(TYPE_NULL));
- return CreateNullValue();
+ return NullValue();
}
bool Value::Equals(const Value* other) const {
@@ -148,84 +137,110 @@ bool Value::Equals(const Value* a, const Value* b) {
Value::Value(Type type) : type_(type) {
}
-///////////////////// FundamentalValue ////////////////////
+// NullValue -------------------------------------------------------------------
-FundamentalValue::FundamentalValue(bool in_value)
- : Value(TYPE_BOOLEAN), boolean_value_(in_value) {
+Value* NullValue() {
+ return NullValue::New();
}
-FundamentalValue::FundamentalValue(int in_value)
- : Value(TYPE_INTEGER), integer_value_(in_value) {
+BooleanValue* TrueValue() {
+ return BooleanValue::New(true);
}
-FundamentalValue::FundamentalValue(double in_value)
- : Value(TYPE_DOUBLE), double_value_(in_value) {
+BooleanValue* FalseValue() {
+ return BooleanValue::New(false);
}
-FundamentalValue::~FundamentalValue() {
+// BooleanValue ----------------------------------------------------------------
+
+BooleanValue::BooleanValue(bool value)
+ : Value(TYPE_BOOLEAN), value_(value) {
}
-bool FundamentalValue::GetAsBoolean(bool* out_value) const {
- if (out_value && IsType(TYPE_BOOLEAN))
- *out_value = boolean_value_;
- return (IsType(TYPE_BOOLEAN));
+BooleanValue::~BooleanValue() {
}
-bool FundamentalValue::GetAsInteger(int* out_value) const {
+// static
+BooleanValue* BooleanValue::New(bool value) {
+ return new BooleanValue(value);
+}
+
+bool BooleanValue::GetAsBoolean(bool* out_value) const {
+ if (out_value)
+ *out_value = value_;
+ return true;
+}
+
+BooleanValue* BooleanValue::DeepCopy() const {
+ return new BooleanValue(value_);
+}
+
+bool BooleanValue::Equals(const Value* other) const {
+ if (other->GetType() != GetType())
+ return false;
+
+ bool lhs, rhs;
+ return GetAsBoolean(&lhs) && other->GetAsBoolean(&rhs) && lhs == rhs;
+}
+
+// NumberValue -----------------------------------------------------------------
+
+NumberValue::NumberValue(int value)
+ : Value(TYPE_INTEGER), integer_value_(value) {
+}
+
+NumberValue::NumberValue(double value)
+ : Value(TYPE_DOUBLE), double_value_(value) {
+}
+
+NumberValue::~NumberValue() {
+}
+
+// static
+NumberValue* NumberValue::New(int value) {
+ return new NumberValue(value);
+}
+
+// static
+NumberValue* NumberValue::New(double value) {
+ return new NumberValue(value);
+}
+
+bool NumberValue::GetAsInteger(int* out_value) const {
if (out_value && IsType(TYPE_INTEGER))
*out_value = integer_value_;
- return (IsType(TYPE_INTEGER));
+ return IsType(TYPE_INTEGER);
}
-bool FundamentalValue::GetAsDouble(double* out_value) const {
+bool NumberValue::GetAsDouble(double* out_value) const {
if (out_value && IsType(TYPE_DOUBLE))
*out_value = double_value_;
else if (out_value && IsType(TYPE_INTEGER))
*out_value = integer_value_;
- return (IsType(TYPE_DOUBLE) || IsType(TYPE_INTEGER));
+ return IsType(TYPE_DOUBLE) || IsType(TYPE_INTEGER);
}
-FundamentalValue* FundamentalValue::DeepCopy() const {
- switch (GetType()) {
- case TYPE_BOOLEAN:
- return CreateBooleanValue(boolean_value_);
-
- case TYPE_INTEGER:
- return CreateIntegerValue(integer_value_);
-
- case TYPE_DOUBLE:
- return CreateDoubleValue(double_value_);
-
- default:
- NOTREACHED();
- return NULL;
- }
+NumberValue* NumberValue::DeepCopy() const {
+ if (IsType(TYPE_INTEGER))
+ return NumberValue::New(integer_value_);
+ else
+ return NumberValue::New(double_value_);
}
-bool FundamentalValue::Equals(const Value* other) const {
+bool NumberValue::Equals(const Value* other) const {
if (other->GetType() != GetType())
return false;
- switch (GetType()) {
- case TYPE_BOOLEAN: {
- bool lhs, rhs;
- return GetAsBoolean(&lhs) && other->GetAsBoolean(&rhs) && lhs == rhs;
- }
- case TYPE_INTEGER: {
- int lhs, rhs;
- return GetAsInteger(&lhs) && other->GetAsInteger(&rhs) && lhs == rhs;
- }
- case TYPE_DOUBLE: {
- double lhs, rhs;
- return GetAsDouble(&lhs) && other->GetAsDouble(&rhs) && lhs == rhs;
- }
- default:
- NOTREACHED();
- return false;
+ if (IsType(TYPE_INTEGER)) {
+ int lhs, rhs;
+ return GetAsInteger(&lhs) && other->GetAsInteger(&rhs) && lhs == rhs;
+ } else {
+ double lhs, rhs;
+ return GetAsDouble(&lhs) && other->GetAsDouble(&rhs) && lhs == rhs;
}
}
-///////////////////// StringValue ////////////////////
+// StringValue -----------------------------------------------------------------
StringValue::StringValue(const std::string& in_value)
: Value(TYPE_STRING),
@@ -241,6 +256,16 @@ StringValue::StringValue(const string16& in_value)
StringValue::~StringValue() {
}
+// static
+StringValue* StringValue::New(const std::string& value) {
+ return new StringValue(value);
+}
+
+// static
+StringValue* StringValue::New(const string16& value) {
+ return new StringValue(value);
+}
+
bool StringValue::GetAsString(std::string* out_value) const {
if (out_value)
*out_value = value_;
@@ -254,7 +279,7 @@ bool StringValue::GetAsString(string16* out_value) const {
}
StringValue* StringValue::DeepCopy() const {
- return CreateStringValue(value_);
+ return StringValue::New(value_);
}
bool StringValue::Equals(const Value* other) const {
@@ -264,7 +289,7 @@ bool StringValue::Equals(const Value* other) const {
return GetAsString(&lhs) && other->GetAsString(&rhs) && lhs == rhs;
}
-///////////////////// BinaryValue ////////////////////
+// BinaryValue -----------------------------------------------------------------
BinaryValue::~BinaryValue() {
DCHECK(buffer_);
@@ -311,7 +336,7 @@ BinaryValue::BinaryValue(char* buffer, size_t size)
DCHECK(buffer_);
}
-///////////////////// DictionaryValue ////////////////////
+// DictionaryValue -------------------------------------------------------------
DictionaryValue::DictionaryValue()
: Value(TYPE_DICTIONARY) {
@@ -363,25 +388,25 @@ void DictionaryValue::Set(const std::string& path, Value* in_value) {
}
void DictionaryValue::SetBoolean(const std::string& path, bool in_value) {
- Set(path, CreateBooleanValue(in_value));
+ Set(path, BooleanValue::New(in_value));
}
void DictionaryValue::SetInteger(const std::string& path, int in_value) {
- Set(path, CreateIntegerValue(in_value));
+ Set(path, NumberValue::New(in_value));
}
void DictionaryValue::SetDouble(const std::string& path, double in_value) {
- Set(path, CreateDoubleValue(in_value));
+ Set(path, NumberValue::New(in_value));
}
void DictionaryValue::SetString(const std::string& path,
const std::string& in_value) {
- Set(path, CreateStringValue(in_value));
+ Set(path, StringValue::New(in_value));
}
void DictionaryValue::SetString(const std::string& path,
const string16& in_value) {
- Set(path, CreateStringValue(in_value));
+ Set(path, StringValue::New(in_value));
}
void DictionaryValue::SetWithoutPathExpansion(const std::string& key,
@@ -687,7 +712,7 @@ bool DictionaryValue::Equals(const Value* other) const {
return true;
}
-///////////////////// ListValue ////////////////////
+// ListValue -------------------------------------------------------------------
ListValue::ListValue() : Value(TYPE_LIST) {
}
@@ -709,7 +734,7 @@ bool ListValue::Set(size_t index, Value* in_value) {
if (index >= list_.size()) {
// Pad out any intermediate indexes with null settings
while (index > list_.size())
- Append(CreateNullValue());
+ Append(NullValue());
Append(in_value);
} else {
DCHECK(list_[index] != in_value);
@@ -899,6 +924,8 @@ bool ListValue::Equals(const Value* other) const {
return true;
}
+// ValueSerializer -------------------------------------------------------------
+
ValueSerializer::~ValueSerializer() {
}
« no previous file with comments | « base/values.h ('k') | base/values_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698