22 #ifndef QMJSONOBJECT_H 23 #define QMJSONOBJECT_H 42 explicit QMJsonObject(
const QHash<QString, QMPointer<QMJsonValue> > &hash);
45 virtual void reserve(int32_t alloc);
46 virtual int32_t capacity(
void)
const;
47 virtual void squeeze(
void);
49 virtual void clear(
void);
51 virtual int32_t count(
void)
const;
52 virtual int32_t size(
void)
const;
54 virtual bool isEmpty(
void)
const;
55 virtual bool empty(
void)
const;
57 virtual bool contains(
const QString &key)
const;
64 virtual void remove(
const QString &key);
65 virtual QMPointer<QMJsonValue> take(
const QString &key);
66 virtual QMPointer<QMJsonValue> take(
const QString &key,
const QMPointer<QMJsonValue> &defaultValue);
67 template<
class T> QMPointer<QMJsonValue> take(
const QString &key,
const T &defaultValue);
69 virtual const QString key(
const QMPointer<QMJsonValue> &value)
const;
70 virtual const QString key(
const QMPointer<QMJsonValue> &value,
const QString &defaultValue)
const;
72 virtual QHash<QString, QMPointer<QMJsonValue> >::iterator begin(
void);
73 virtual QHash<QString, QMPointer<QMJsonValue> >::iterator end(
void);
74 virtual QHash<QString, QMPointer<QMJsonValue> >::const_iterator cbegin(
void)
const;
75 virtual QHash<QString, QMPointer<QMJsonValue> >::const_iterator cend(
void)
const;
77 virtual const QHash<QString, QMPointer<QMJsonValue> >::iterator erase(
const QHash<QString, QMPointer<QMJsonValue> >::iterator &iter);
78 virtual QHash<QString, QMPointer<QMJsonValue> >::iterator find(
const QString &key);
79 virtual const QHash<QString, QMPointer<QMJsonValue> >::const_iterator cfind(
const QString &key)
const;
81 virtual const QMPointer<QMJsonValue> &value(
const QString &key)
const;
82 virtual const QMPointer<QMJsonValue> &value(
const QString &key,
const QMPointer<QMJsonValue> &defaultValue)
const;
83 template<
class T> QMPointer<QMJsonValue> value(
const QString &key,
const T &defaultValue)
const;
85 virtual QList<QString> keys(
void)
const;
86 virtual QList<QMPointer<QMJsonValue> > values(
void)
const;
87 virtual QHash<QString, QMPointer<QMJsonValue> > hash(
void)
const;
89 virtual bool isNull(
const QString &key)
const;
90 virtual bool isBool(
const QString &key)
const;
91 virtual bool isDouble(
const QString &key)
const;
92 virtual bool isString(
const QString &key)
const;
93 virtual bool isArray(
const QString &key)
const;
94 virtual bool isObject(
const QString &key)
const;
95 template<
class T>
bool is(
const QString &key)
const;
97 virtual bool toBool(
const QString &key)
const;
98 virtual double toDouble(
const QString &key)
const;
99 virtual QString toString(
const QString &key)
const;
100 virtual const QMPointer<QMJsonArray> &toArray(
const QString &key)
const;
101 virtual const QMPointer<QMJsonObject> &toObject(
const QString &key)
const;
103 virtual bool toBool(
const QString &key,
bool defaultValue)
const;
104 virtual double toDouble(
const QString &key,
double defaultValue)
const;
105 virtual const QString &toString(
const QString &key,
const QString &defaultValue)
const;
106 virtual const QMPointer<QMJsonArray> &toArray(
const QString &key,
const QMPointer<QMJsonArray> &defaultValue)
const;
107 virtual const QMPointer<QMJsonObject> &toObject(
const QString &key,
const QMPointer<QMJsonObject> &defaultValue)
const;
108 template<
class T>
const T &to(
const QString &key,
const T &defaultValue)
const;
110 virtual bool fromBool(
const QString &key,
bool value);
111 virtual bool fromDouble(
const QString &key,
double value);
112 virtual bool fromString(
const QString &key,
const QString &value);
113 virtual bool fromArray(
const QString &key,
const QMPointer<QMJsonArray> &value);
114 virtual bool fromObject(
const QString &key,
const QMPointer<QMJsonObject> &value);
115 virtual bool from(
const QString &key,
const QMPointer<QMJsonValue> &value);
116 template <
class T>
bool from(
const QString &key,
const T &value);
120 void itemAdded(
const QString &key,
const QMPointer<QMJsonValue> &value);
121 void itemRemoved(
const QString &key,
const QMPointer<QMJsonValue> &value);
127 QHash<QString, QMPointer<QMJsonValue> > mHash;
131 QDebug
QM_JSON_EXPORT operator<<(QDebug dbg, const QMPointer<QMJsonObject> &value);
146 auto iter = mHash.find(key);
148 if(iter == mHash.end())
149 return QMPointer<QMJsonValue>(
new QMJsonValue(defaultValue));
159 auto iter = mHash.constFind(key);
161 if(iter == mHash.constEnd())
162 return QMPointer<QMJsonValue>(
new QMJsonValue(defaultValue));
170 auto iter = mHash.constFind(key);
172 if(iter == mHash.constEnd())
175 return iter.value()->is<T>();
181 return this->
value(key)->to<T>(defaultValue);
190 #endif // QMJSONOBJECT_H virtual const QMPointer< QMJsonValue > & value(const QString &key) const
const T & to(const QString &key, const T &defaultValue) const
bool is(const QString &key) const
virtual void insert(const QString &key, const QMPointer< QMJsonValue > &value, QMJsonReplacementPolicy policy=QMJsonReplacementPolicy_Replace)
virtual QMPointer< QMJsonValue > take(const QString &key)
QDebug QM_JSON_EXPORT operator<<(QDebug dbg, const QMJsonObject &object)
virtual const QHash< QString, QMPointer< QMJsonValue > >::iterator erase(const QHash< QString, QMPointer< QMJsonValue > >::iterator &iter)
virtual bool from(const QString &key, const QMPointer< QMJsonValue > &value)