42 typedef QMPointer<QMJsonValue> (*FromComplexJsonFunc)(
const QMPointer<QMJsonObject> &obj);
61 explicit QMJsonValue(
const QMPointer<QMJsonValue> &value);
62 explicit QMJsonValue(
const QMPointer<QMJsonArray> &value);
63 explicit QMJsonValue(
const QMPointer<QMJsonObject> &value);
67 template<
class T>
explicit QMJsonValue(
const T &value);
81 #if UINTPTR_MAX == 0xffffffff 86 #elif UINTPTR_MAX == 0xffffffffffffffff 95 virtual bool isNull(
void)
const;
96 virtual bool isBool(
void)
const;
97 virtual bool isDouble(
void)
const;
98 virtual bool isString(
void)
const;
99 virtual bool isArray(
void)
const;
100 virtual bool isObject(
void)
const;
101 template<
class T>
bool is(
void)
const;
103 virtual bool toBool(
void)
const;
104 virtual double toDouble(
void)
const;
105 virtual QString toString(
void)
const;
106 virtual const QMPointer<QMJsonArray> &toArray(
void)
const;
107 virtual const QMPointer<QMJsonObject> &toObject(
void)
const;
109 virtual bool toBool(
bool defaultValue)
const;
110 virtual double toDouble(
double defaultValue)
const;
111 virtual const QString &toString(
const QString &defaultValue)
const;
112 virtual const QMPointer<QMJsonArray> &toArray(
const QMPointer<QMJsonArray> &defaultValue)
const;
113 virtual const QMPointer<QMJsonObject> &toObject(
const QMPointer<QMJsonObject> &defaultValue)
const;
114 template<
class T>
const T &to(
const T &defaultValue)
const;
116 virtual bool fromBool(
bool value);
117 virtual bool fromDouble(
double value);
118 virtual bool fromString(
const QString &value);
119 virtual bool fromArray(
const QMPointer<QMJsonArray> &value);
120 virtual bool fromObject(
const QMPointer<QMJsonObject> &value);
121 virtual bool from(
const QMPointer<QMJsonValue> &value);
122 template <
class T>
bool from(
const T &value);
124 virtual const QMPointer<QMJsonValue> &value(int32_t index)
const;
125 virtual const QMPointer<QMJsonValue> &value(
const QString &key)
const;
127 virtual QVariant toVariant(
void);
128 static QMPointer<QMJsonValue> fromVariant(
const QVariant &value);
131 virtual const QString &typeString(
void)
const;
135 static QMPointer<QMJsonValue>
fromJson(
const QString &json);
136 static QMPointer<QMJsonValue> fromJsonFile(
const QString &filename);
142 void valueChanged(
void);
146 static void skipSpaces(
const QString &json, int32_t &index);
147 static void verifyIndex(
const QString &json, int32_t &index);
148 static QMPointer<QMJsonValue>
fromJson(
const QString &json, int32_t &index);
149 static QMPointer<QMJsonValue>
fromComplexJson(
const QMPointer<QMJsonValue> &value);
150 static void throwError(
const QString &json, int32_t index, QString error);
152 template <
class T>
bool set(
const T &value);
159 QMPointer<QMJsonTypeBase> mValue;
161 static QMap<QString, FromComplexJsonFunc> mFromFuncs;
169 QDebug
QM_JSON_EXPORT operator<<(QDebug dbg, const QMPointer<QMJsonValue> &value);
181 mValue = qSharedPointerDynamicCast<QMJsonTypeBase>(
type);
187 return qSharedPointerDynamicCast<QMJsonType<T> >(mValue) != NULL;
193 auto type = qSharedPointerDynamicCast<QMJsonType<T> >(mValue);
212 return this->set<T>(
value);
219 return this->set<T>(
value);
226 bool QMJsonValue::set(
const T &value)
228 auto type = qSharedPointerDynamicCast<QMJsonType<T> >(mValue);
239 #endif // QMJSONVALUE_H
virtual QString toJson(int32_t tab, QMJsonSort sort)
virtual void set(const T &value)
static QMPointer< QMJsonValue > fromJson(const QString &json, int32_t &index)
virtual const QMPointer< QMJsonValue > & value(int32_t index) const
virtual QMJsonValueType type(void) const
virtual bool from(const QMPointer< QMJsonValue > &value)
const T & to(const T &defaultValue) const
QDebug QM_JSON_EXPORT operator<<(QDebug dbg, const QMJsonValue &value)
static QMPointer< QMJsonValue > fromComplexJson(const QMPointer< QMJsonObject > &obj)
QMPointer< QMJsonValue >(* FromComplexJsonFunc)(const QMPointer< QMJsonObject > &obj)