Index: third_party/WebKit/Source/platform/JSONValues.h |
diff --git a/third_party/WebKit/Source/platform/JSONValues.h b/third_party/WebKit/Source/platform/JSONValues.h |
index 4a06be7eae0b8a7c7f3cf16f5cc41a6f0a50a1ab..a6cf1ddbb9f80f60b2b70468c5d7e3e8511d22f7 100644 |
--- a/third_party/WebKit/Source/platform/JSONValues.h |
+++ b/third_party/WebKit/Source/platform/JSONValues.h |
@@ -56,7 +56,6 @@ class PLATFORM_EXPORT JSONValue : public RefCounted<JSONValue> { |
public: |
static const int maxDepth = 1000; |
- JSONValue() : m_type(TypeNull) { } |
virtual ~JSONValue() { } |
static PassRefPtr<JSONValue> null() |
@@ -84,10 +83,6 @@ public: |
virtual bool asNumber(unsigned long* output) const; |
virtual bool asNumber(unsigned* output) const; |
virtual bool asString(String* output) const; |
- virtual bool asObject(RefPtr<JSONObject>* output); |
- virtual bool asArray(RefPtr<JSONArray>* output); |
- virtual PassRefPtr<JSONObject> asObject(); |
- virtual PassRefPtr<JSONArray> asArray(); |
String toJSONString() const; |
String toPrettyJSONString() const; |
@@ -97,12 +92,13 @@ public: |
static String quoteString(const String&); |
protected: |
+ JSONValue() : m_type(TypeNull) { } |
explicit JSONValue(Type type) : m_type(type) { } |
virtual void prettyWriteJSONInternal(StringBuilder* output, int depth) const; |
private: |
- friend class JSONObjectBase; |
- friend class JSONArrayBase; |
+ friend class JSONObject; |
+ friend class JSONArray; |
Type m_type; |
}; |
@@ -168,7 +164,7 @@ private: |
String m_stringValue; |
}; |
-class PLATFORM_EXPORT JSONObjectBase : public JSONValue { |
+class PLATFORM_EXPORT JSONObject : public JSONValue { |
private: |
typedef HashMap<String, RefPtr<JSONValue>> Dictionary; |
@@ -176,18 +172,22 @@ public: |
typedef Dictionary::iterator iterator; |
typedef Dictionary::const_iterator const_iterator; |
- PassRefPtr<JSONObject> asObject() override; |
- JSONObject* openAccessors(); |
+ static PassRefPtr<JSONObject> create() |
+ { |
+ return adoptRef(new JSONObject()); |
+ } |
+ |
+ static PassRefPtr<JSONObject> cast(PassRefPtr<JSONValue> value) |
+ { |
+ if (!value || value->type() != TypeObject) |
+ return nullptr; |
+ return adoptRef(static_cast<JSONObject*>(value.leakRef())); |
+ } |
void writeJSON(StringBuilder* output) const override; |
int size() const { return m_data.size(); } |
-protected: |
- ~JSONObjectBase() override; |
- |
- bool asObject(RefPtr<JSONObject>* output) override; |
- |
void setBoolean(const String& name, bool); |
void setNumber(const String& name, double); |
void setString(const String& name, const String&); |
@@ -214,71 +214,42 @@ protected: |
void remove(const String& name); |
- void prettyWriteJSONInternal(StringBuilder* output, int depth) const override; |
- |
iterator begin() { return m_data.begin(); } |
iterator end() { return m_data.end(); } |
const_iterator begin() const { return m_data.begin(); } |
const_iterator end() const { return m_data.end(); } |
+ ~JSONObject() override; |
protected: |
- JSONObjectBase(); |
+ void prettyWriteJSONInternal(StringBuilder* output, int depth) const override; |
private: |
+ JSONObject(); |
+ |
Dictionary m_data; |
Vector<String> m_order; |
}; |
-class PLATFORM_EXPORT JSONObject : public JSONObjectBase { |
-public: |
- static PassRefPtr<JSONObject> create() |
- { |
- return adoptRef(new JSONObject()); |
- } |
- |
- using JSONObjectBase::asObject; |
- |
- using JSONObjectBase::setBoolean; |
- using JSONObjectBase::setNumber; |
- using JSONObjectBase::setString; |
- using JSONObjectBase::setValue; |
- using JSONObjectBase::setObject; |
- using JSONObjectBase::setArray; |
- |
- using JSONObjectBase::find; |
- using JSONObjectBase::getBoolean; |
- using JSONObjectBase::getNumber; |
- using JSONObjectBase::getString; |
- using JSONObjectBase::getObject; |
- using JSONObjectBase::getArray; |
- using JSONObjectBase::get; |
- |
- using JSONObjectBase::booleanProperty; |
- |
- using JSONObjectBase::remove; |
- |
- using JSONObjectBase::begin; |
- using JSONObjectBase::end; |
- |
- using JSONObjectBase::size; |
-}; |
- |
- |
-class PLATFORM_EXPORT JSONArrayBase : public JSONValue { |
+class PLATFORM_EXPORT JSONArray : public JSONValue { |
public: |
typedef Vector<RefPtr<JSONValue>>::iterator iterator; |
typedef Vector<RefPtr<JSONValue>>::const_iterator const_iterator; |
- PassRefPtr<JSONArray> asArray() override; |
- |
- unsigned length() const { return m_data.size(); } |
+ static PassRefPtr<JSONArray> create() |
+ { |
+ return adoptRef(new JSONArray()); |
+ } |
- void writeJSON(StringBuilder* output) const override; |
+ static PassRefPtr<JSONArray> cast(PassRefPtr<JSONValue> value) |
+ { |
+ if (!value || value->type() != TypeArray) |
+ return nullptr; |
+ return adoptRef(static_cast<JSONArray*>(value.leakRef())); |
+ } |
-protected: |
- ~JSONArrayBase() override; |
+ ~JSONArray() override; |
- bool asArray(RefPtr<JSONArray>* output) override; |
+ void writeJSON(StringBuilder* output) const override; |
void pushBoolean(bool); |
void pushInt(int); |
@@ -289,8 +260,7 @@ protected: |
void pushArray(PassRefPtr<JSONArray>); |
PassRefPtr<JSONValue> get(size_t index); |
- |
- void prettyWriteJSONInternal(StringBuilder* output, int depth) const override; |
+ unsigned length() const { return m_data.size(); } |
iterator begin() { return m_data.begin(); } |
iterator end() { return m_data.end(); } |
@@ -298,35 +268,13 @@ protected: |
const_iterator end() const { return m_data.end(); } |
protected: |
- JSONArrayBase(); |
+ void prettyWriteJSONInternal(StringBuilder* output, int depth) const override; |
private: |
+ JSONArray(); |
Vector<RefPtr<JSONValue>> m_data; |
}; |
-class PLATFORM_EXPORT JSONArray : public JSONArrayBase { |
-public: |
- static PassRefPtr<JSONArray> create() |
- { |
- return adoptRef(new JSONArray()); |
- } |
- |
- using JSONArrayBase::asArray; |
- |
- using JSONArrayBase::pushBoolean; |
- using JSONArrayBase::pushInt; |
- using JSONArrayBase::pushNumber; |
- using JSONArrayBase::pushString; |
- using JSONArrayBase::pushValue; |
- using JSONArrayBase::pushObject; |
- using JSONArrayBase::pushArray; |
- |
- using JSONArrayBase::get; |
- |
- using JSONArrayBase::begin; |
- using JSONArrayBase::end; |
-}; |
- |
PLATFORM_EXPORT void escapeStringForJSON(const String&, StringBuilder*); |
void doubleQuoteStringForJSON(const String&, StringBuilder*); |