#include "wtf/text/StringHash.h"
#include "wtf/text/WTFString.h"
-namespace WebCore {
+namespace blink {
class JSONArray;
class JSONObject;
virtual PassRefPtr<JSONArray> asArray();
String toJSONString() const;
+ String toPrettyJSONString() const;
virtual void writeJSON(StringBuilder* output) const;
+ virtual void prettyWriteJSON(StringBuilder* output) const;
protected:
explicit JSONValue(Type type) : m_type(type) { }
+ virtual void prettyWriteJSONInternal(StringBuilder* output, int depth) const;
private:
+ friend class JSONObjectBase;
+ friend class JSONArrayBase;
+
Type m_type;
};
return adoptRef(new JSONBasicValue(value));
}
- virtual bool asBoolean(bool* output) const OVERRIDE;
- virtual bool asNumber(double* output) const OVERRIDE;
- virtual bool asNumber(long* output) const OVERRIDE;
- virtual bool asNumber(int* output) const OVERRIDE;
- virtual bool asNumber(unsigned long* output) const OVERRIDE;
- virtual bool asNumber(unsigned* output) const OVERRIDE;
+ virtual bool asBoolean(bool* output) const override;
+ virtual bool asNumber(double* output) const override;
+ virtual bool asNumber(long* output) const override;
+ virtual bool asNumber(int* output) const override;
+ virtual bool asNumber(unsigned long* output) const override;
+ virtual bool asNumber(unsigned* output) const override;
- virtual void writeJSON(StringBuilder* output) const OVERRIDE;
+ virtual void writeJSON(StringBuilder* output) const override;
private:
explicit JSONBasicValue(bool value) : JSONValue(TypeBoolean), m_boolValue(value) { }
return adoptRef(new JSONString(value));
}
- virtual bool asString(String* output) const OVERRIDE;
+ virtual bool asString(String* output) const override;
- virtual void writeJSON(StringBuilder* output) const OVERRIDE;
+ virtual void writeJSON(StringBuilder* output) const override;
private:
explicit JSONString(const String& value) : JSONValue(TypeString), m_stringValue(value) { }
typedef Dictionary::iterator iterator;
typedef Dictionary::const_iterator const_iterator;
- virtual PassRefPtr<JSONObject> asObject() OVERRIDE;
+ virtual PassRefPtr<JSONObject> asObject() override;
JSONObject* openAccessors();
+ virtual void writeJSON(StringBuilder* output) const override;
+
protected:
virtual ~JSONObjectBase();
- virtual bool asObject(RefPtr<JSONObject>* output) OVERRIDE;
+ virtual bool asObject(RefPtr<JSONObject>* output) override;
void setBoolean(const String& name, bool);
void setNumber(const String& name, double);
void remove(const String& name);
- virtual void writeJSON(StringBuilder* output) const OVERRIDE;
+ virtual void prettyWriteJSONInternal(StringBuilder* output, int depth) const override;
iterator begin() { return m_data.begin(); }
iterator end() { return m_data.end(); }
typedef Vector<RefPtr<JSONValue> >::iterator iterator;
typedef Vector<RefPtr<JSONValue> >::const_iterator const_iterator;
- virtual PassRefPtr<JSONArray> asArray() OVERRIDE;
+ virtual PassRefPtr<JSONArray> asArray() override;
unsigned length() const { return m_data.size(); }
+ virtual void writeJSON(StringBuilder* output) const override;
+
protected:
virtual ~JSONArrayBase();
- virtual bool asArray(RefPtr<JSONArray>* output) OVERRIDE;
+ virtual bool asArray(RefPtr<JSONArray>* output) override;
void pushBoolean(bool);
void pushInt(int);
PassRefPtr<JSONValue> get(size_t index);
- virtual void writeJSON(StringBuilder* output) const OVERRIDE;
+ virtual void prettyWriteJSONInternal(StringBuilder* output, int depth) const override;
iterator begin() { return m_data.begin(); }
iterator end() { return m_data.end(); }
using JSONArrayBase::end;
};
-
-inline JSONObjectBase::iterator JSONObjectBase::find(const String& name)
-{
- return m_data.find(name);
-}
-
-inline JSONObjectBase::const_iterator JSONObjectBase::find(const String& name) const
-{
- return m_data.find(name);
-}
-
-inline void JSONObjectBase::setBoolean(const String& name, bool value)
-{
- setValue(name, JSONBasicValue::create(value));
-}
-
-inline void JSONObjectBase::setNumber(const String& name, double value)
-{
- setValue(name, JSONBasicValue::create(value));
-}
-
-inline void JSONObjectBase::setString(const String& name, const String& value)
-{
- setValue(name, JSONString::create(value));
-}
-
-inline void JSONObjectBase::setValue(const String& name, PassRefPtr<JSONValue> value)
-{
- ASSERT(value);
- if (m_data.set(name, value).isNewEntry)
- m_order.append(name);
-}
-
-inline void JSONObjectBase::setObject(const String& name, PassRefPtr<JSONObject> value)
-{
- ASSERT(value);
- if (m_data.set(name, value).isNewEntry)
- m_order.append(name);
-}
-
-inline void JSONObjectBase::setArray(const String& name, PassRefPtr<JSONArray> value)
-{
- ASSERT(value);
- if (m_data.set(name, value).isNewEntry)
- m_order.append(name);
-}
-
-inline void JSONArrayBase::pushBoolean(bool value)
-{
- m_data.append(JSONBasicValue::create(value));
-}
-
-inline void JSONArrayBase::pushInt(int value)
-{
- m_data.append(JSONBasicValue::create(value));
-}
-
-inline void JSONArrayBase::pushNumber(double value)
-{
- m_data.append(JSONBasicValue::create(value));
-}
-
-inline void JSONArrayBase::pushString(const String& value)
-{
- m_data.append(JSONString::create(value));
-}
-
-inline void JSONArrayBase::pushValue(PassRefPtr<JSONValue> value)
-{
- ASSERT(value);
- m_data.append(value);
-}
-
-inline void JSONArrayBase::pushObject(PassRefPtr<JSONObject> value)
-{
- ASSERT(value);
- m_data.append(value);
-}
-
-inline void JSONArrayBase::pushArray(PassRefPtr<JSONArray> value)
-{
- ASSERT(value);
- m_data.append(value);
-}
-
-} // namespace WebCore
+} // namespace blink
#endif // !defined(JSONValues_h)