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

Unified Diff: base/values.h

Issue 2475603002: Inline FundamentalValue into base::Value (Closed)
Patch Set: Merge Created 4 years, 1 month 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 | « no previous file | base/values.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/values.h
diff --git a/base/values.h b/base/values.h
index 258a9603a614e1a514724434652bd7595b11e7ea..4b7999c7122a91ca4f318586b8b04f2f3a31521c 100644
--- a/base/values.h
+++ b/base/values.h
@@ -61,6 +61,8 @@ class BASE_EXPORT Value {
// Note: Do not add more types. See the file-level comment above for why.
};
+ Value(); // A null value.
+
virtual ~Value();
static std::unique_ptr<Value> CreateNullValue();
@@ -73,10 +75,23 @@ class BASE_EXPORT Value {
// safe to use the Type to determine whether you can cast from
// Value* to (Implementing Class)*. Also, a Value object never changes
// its type after construction.
- Type GetType() const { return type_; }
+ Type GetType() const { return type_; } // DEPRECATED, use type().
+ Type type() const { return type_; }
// Returns true if the current object represents a given type.
bool IsType(Type type) const { return type == type_; }
+ bool is_bool() const { return type() == TYPE_BOOLEAN; }
+ bool is_int() const { return type() == TYPE_INTEGER; }
+ bool is_double() const { return type() == TYPE_DOUBLE; }
+ bool is_string() const { return type() == TYPE_STRING; }
+ bool is_blob() const { return type() == TYPE_BINARY; }
+ bool is_dict() const { return type() == TYPE_DICTIONARY; }
+ bool is_list() const { return type() == TYPE_LIST; }
+
+ // These will all fatally assert if the type doesn't match.
+ bool GetBool() const;
+ int GetInt() const;
+ double GetDouble() const; // Implicitly converts from int if necessary.
// These methods allow the convenient retrieval of the contents of the Value.
// If the current object can be converted into the given type, the value is
@@ -119,33 +134,29 @@ class BASE_EXPORT Value {
Value(const Value& that);
Value& operator=(const Value& that);
+ // TODO(brettw) move to public when FundamentalValue is gone.
+ Value(bool in_bool);
+ Value(int in_int);
+ Value(double in_double);
+
private:
Type type_;
+
+ union {
+ bool bool_value_;
+ int int_value_;
+ double double_value_;
+ };
};
// FundamentalValue represents the simple fundamental types of values.
+// TODO(brettw) remove when callers are updated to use raw Value.
class BASE_EXPORT FundamentalValue : public Value {
public:
explicit FundamentalValue(bool in_value);
explicit FundamentalValue(int in_value);
explicit FundamentalValue(double in_value);
~FundamentalValue() override;
-
- // Overridden from Value:
- bool GetAsBoolean(bool* out_value) const override;
- bool GetAsInteger(int* out_value) const override;
- // Values of both type TYPE_INTEGER and TYPE_DOUBLE can be obtained as
- // doubles.
- bool GetAsDouble(double* out_value) const override;
- FundamentalValue* DeepCopy() const override;
- bool Equals(const Value* other) const override;
-
- private:
- union {
vabr (Chromium) 2016/12/07 14:31:11 As a result of moving this union up to base::Value
- bool boolean_value_;
- int integer_value_;
- double double_value_;
- };
};
class BASE_EXPORT StringValue : public Value {
« no previous file with comments | « no previous file | base/values.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698