qjsonvalue.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/corelib/json/qjsonvalue.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4QJsonValue::QJsonValue(Type type)-
5 : ui(0), d(0), t(type)-
6{-
7}-
8-
9-
10-
11-
12QJsonValue::QJsonValue(QJsonPrivate::Data *data, QJsonPrivate::Base *base, const QJsonPrivate::Value &v)-
13 : d(0)-
14{-
15 t = (Type)(uint)v.type;-
16 switch (t) {-
17 case Undefined:-
18 case Null:-
19 dbl = 0;-
20 break;-
21 case Bool:-
22 b = v.toBoolean();-
23 break;-
24 case Double:-
25 dbl = v.toDouble(base);-
26 break;-
27 case String: {-
28 QString s = v.toString(base);-
29 stringData = s.data_ptr();-
30 stringData->ref.ref();-
31 break;-
32 }-
33 case Array:-
34 case Object:-
35 d = data;-
36 this->base = v.base(base);-
37 break;-
38 }-
39 if (d)-
40 d->ref.ref();-
41}-
42-
43-
44-
45-
46QJsonValue::QJsonValue(bool b)-
47 : d(0), t(Bool)-
48{-
49 this->b = b;-
50}-
51-
52-
53-
54-
55QJsonValue::QJsonValue(double n)-
56 : d(0), t(Double)-
57{-
58 this->dbl = n;-
59}-
60-
61-
62-
63-
64-
65QJsonValue::QJsonValue(int n)-
66 : d(0), t(Double)-
67{-
68 this->dbl = n;-
69}-
70-
71-
72-
73-
74-
75-
76-
77QJsonValue::QJsonValue(qint64 n)-
78 : d(0), t(Double)-
79{-
80 this->dbl = double(n);-
81}-
82-
83-
84-
85-
86QJsonValue::QJsonValue(const QString &s)-
87 : d(0), t(String)-
88{-
89 stringDataFromQStringHelper(s);-
90}-
91void QJsonValue::stringDataFromQStringHelper(const QString &string)-
92{-
93 stringData = *(QStringData **)(&string);-
94 stringData->ref.ref();-
95}-
96-
97-
98-
99-
100QJsonValue::QJsonValue(QLatin1String s)-
101 : d(0), t(String)-
102{-
103-
104 QString str(s);-
105 stringDataFromQStringHelper(str);-
106}-
107-
108-
109-
110-
111QJsonValue::QJsonValue(const QJsonArray &a)-
112 : d(a.d), t(Array)-
113{-
114 base = a.a;-
115 if (d)-
116 d->ref.ref();-
117}-
118-
119-
120-
121-
122QJsonValue::QJsonValue(const QJsonObject &o)-
123 : d(o.d), t(Object)-
124{-
125 base = o.o;-
126 if (d)-
127 d->ref.ref();-
128}-
129-
130-
131-
132-
133-
134QJsonValue::~QJsonValue()-
135{-
136 if (t == String && stringData && !stringData->ref.deref())-
137 free(stringData);-
138-
139 if (d && !d->ref.deref())-
140 delete d;-
141}-
142-
143-
144-
145-
146QJsonValue::QJsonValue(const QJsonValue &other)-
147{-
148 t = other.t;-
149 d = other.d;-
150 ui = other.ui;-
151 if (d)-
152 d->ref.ref();-
153-
154 if (t == String && stringData)-
155 stringData->ref.ref();-
156}-
157-
158-
159-
160-
161QJsonValue &QJsonValue::operator =(const QJsonValue &other)-
162{-
163 QJsonValue copy(other);-
164-
165 qSwap(dbl, copy.dbl);-
166 qSwap(d, copy.d);-
167 qSwap(t, copy.t);-
168 return *this;-
169}-
170QJsonValue QJsonValue::fromVariant(const QVariant &variant)-
171{-
172 switch (variant.userType()) {-
173 case QVariant::Bool:-
174 return QJsonValue(variant.toBool());-
175 case QVariant::Int:-
176 case QMetaType::Float:-
177 case QVariant::Double:-
178 case QVariant::LongLong:-
179 case QVariant::ULongLong:-
180 case QVariant::UInt:-
181 return QJsonValue(variant.toDouble());-
182 case QVariant::String:-
183 return QJsonValue(variant.toString());-
184 case QVariant::StringList:-
185 return QJsonValue(QJsonArray::fromStringList(variant.toStringList()));-
186 case QVariant::List:-
187 return QJsonValue(QJsonArray::fromVariantList(variant.toList()));-
188 case QVariant::Map:-
189 return QJsonValue(QJsonObject::fromVariantMap(variant.toMap()));-
190 case QVariant::Hash:-
191 return QJsonValue(QJsonObject::fromVariantHash(variant.toHash()));-
192-
193 case QMetaType::QJsonValue:-
194 return variant.toJsonValue();-
195 case QMetaType::QJsonObject:-
196 return variant.toJsonObject();-
197 case QMetaType::QJsonArray:-
198 return variant.toJsonArray();-
199 case QMetaType::QJsonDocument: {-
200 QJsonDocument doc = variant.toJsonDocument();-
201 return doc.isArray() ? QJsonValue(doc.array()) : QJsonValue(doc.object());-
202 }-
203-
204 default:-
205 break;-
206 }-
207 QString string = variant.toString();-
208 if (string.isEmpty())-
209 return QJsonValue();-
210 return QJsonValue(string);-
211}-
212QVariant QJsonValue::toVariant() const-
213{-
214 switch (t) {-
215 case Bool:-
216 return b;-
217 case Double:-
218 return dbl;-
219 case String:-
220 return toString();-
221 case Array:-
222 return d ?-
223 QJsonArray(d, static_cast<QJsonPrivate::Array *>(base)).toVariantList() :-
224 QVariantList();-
225 case Object:-
226 return d ?-
227 QJsonObject(d, static_cast<QJsonPrivate::Object *>(base)).toVariantMap() :-
228 QVariantMap();-
229 case Null:-
230 case Undefined:-
231 break;-
232 }-
233 return QVariant();-
234}-
235QJsonValue::Type QJsonValue::type() const-
236{-
237 return t;-
238}-
239-
240-
241-
242-
243-
244-
245bool QJsonValue::toBool(bool defaultValue) const-
246{-
247 if (t != Bool)-
248 return defaultValue;-
249 return b;-
250}-
251-
252-
253-
254-
255-
256-
257-
258int QJsonValue::toInt(int defaultValue) const-
259{-
260 if (t == Double && int(dbl) == dbl)-
261 return int(dbl);-
262 return defaultValue;-
263}-
264-
265-
266-
267-
268-
269-
270double QJsonValue::toDouble(double defaultValue) const-
271{-
272 if (t != Double)-
273 return defaultValue;-
274 return dbl;-
275}-
276-
277-
278-
279-
280-
281-
282QString QJsonValue::toString(const QString &defaultValue) const-
283{-
284 if (t != String)-
285 return defaultValue;-
286 stringData->ref.ref();-
287 QStringDataPtr holder = { stringData };-
288 return QString(holder);-
289}-
290QString QJsonValue::toString() const-
291{-
292 if (t != String
t != StringDescription
TRUEevaluated 157 times by 3 tests
Evaluated by:
  • tst_QImageReader
  • tst_QImageWriter
  • tst_QNetworkCookieJar
FALSEevaluated 69808 times by 117 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractPrintDialog
  • tst_QAbstractScrollArea
  • tst_QAccessibility
  • tst_QApplication
  • tst_QBrush
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QColumnView
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QDataStream
  • tst_QDateTimeEdit
  • tst_QDialog
  • tst_QDoubleSpinBox
  • tst_QFactoryLoader
  • tst_QFileDialog2
  • tst_QFileIconProvider
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QFocusEvent
  • ...
)
157-69808
293 return
executed 157 times by 3 tests: return QString();
Executed by:
  • tst_QImageReader
  • tst_QImageWriter
  • tst_QNetworkCookieJar
QString();
executed 157 times by 3 tests: return QString();
Executed by:
  • tst_QImageReader
  • tst_QImageWriter
  • tst_QNetworkCookieJar
157
294 stringData->ref.ref();-
295 QStringDataPtr holder = { stringData };-
296 return
executed 69808 times by 117 tests: return QString(holder);
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractPrintDialog
  • tst_QAbstractScrollArea
  • tst_QAccessibility
  • tst_QApplication
  • tst_QBrush
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QColumnView
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QDataStream
  • tst_QDateTimeEdit
  • tst_QDialog
  • tst_QDoubleSpinBox
  • tst_QFactoryLoader
  • tst_QFileDialog2
  • tst_QFileIconProvider
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QFocusEvent
  • ...
QString(holder);
executed 69808 times by 117 tests: return QString(holder);
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractPrintDialog
  • tst_QAbstractScrollArea
  • tst_QAccessibility
  • tst_QApplication
  • tst_QBrush
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QColumnView
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QDataStream
  • tst_QDateTimeEdit
  • tst_QDialog
  • tst_QDoubleSpinBox
  • tst_QFactoryLoader
  • tst_QFileDialog2
  • tst_QFileIconProvider
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QFocusEvent
  • ...
69808
297}-
298-
299-
300-
301-
302-
303-
304QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const-
305{-
306 if (!d || t != Array)-
307 return defaultValue;-
308-
309 return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base));-
310}-
311QJsonArray QJsonValue::toArray() const-
312{-
313 return toArray(QJsonArray());-
314}-
315-
316-
317-
318-
319-
320-
321QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const-
322{-
323 if (!d || t != Object)-
324 return defaultValue;-
325-
326 return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base));-
327}-
328QJsonObject QJsonValue::toObject() const-
329{-
330 return toObject(QJsonObject());-
331}-
332-
333-
334-
335-
336bool QJsonValue::operator==(const QJsonValue &other) const-
337{-
338 if (t != other.t)-
339 return false;-
340-
341 switch (t) {-
342 case Undefined:-
343 case Null:-
344 break;-
345 case Bool:-
346 return b == other.b;-
347 case Double:-
348 return dbl == other.dbl;-
349 case String:-
350 return toString() == other.toString();-
351 case Array:-
352 if (base == other.base)-
353 return true;-
354 if (!base)-
355 return !other.base->length;-
356 if (!other.base)-
357 return !base->length;-
358 return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base))-
359 == QJsonArray(other.d, static_cast<QJsonPrivate::Array *>(other.base));-
360 case Object:-
361 if (base == other.base)-
362 return true;-
363 if (!base)-
364 return !other.base->length;-
365 if (!other.base)-
366 return !base->length;-
367 return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base))-
368 == QJsonObject(other.d, static_cast<QJsonPrivate::Object *>(other.base));-
369 }-
370 return true;-
371}-
372-
373-
374-
375-
376bool QJsonValue::operator!=(const QJsonValue &other) const-
377{-
378 return !(*this == other);-
379}-
380-
381-
382-
383-
384void QJsonValue::detach()-
385{-
386 if (!d)-
387 return;-
388-
389 QJsonPrivate::Data *x = d->clone(base);-
390 x->ref.ref();-
391 if (!d->ref.deref())-
392 delete d;-
393 d = x;-
394 base = static_cast<QJsonPrivate::Object *>(d->header->root());-
395}-
396QJsonValueRef &QJsonValueRef::operator =(const QJsonValue &val)-
397{-
398 if (is_object)-
399 o->setValueAt(index, val);-
400 else-
401 a->replace(index, val);-
402-
403 return *this;-
404}-
405-
406QJsonValueRef &QJsonValueRef::operator =(const QJsonValueRef &ref)-
407{-
408 if (is_object)-
409 o->setValueAt(index, ref);-
410 else-
411 a->replace(index, ref);-
412-
413 return *this;-
414}-
415-
416QVariant QJsonValueRef::toVariant() const-
417{-
418 return toValue().toVariant();-
419}-
420-
421QJsonArray QJsonValueRef::toArray() const-
422{-
423 return toValue().toArray();-
424}-
425-
426QJsonObject QJsonValueRef::toObject() const-
427{-
428 return toValue().toObject();-
429}-
430-
431QJsonValue QJsonValueRef::toValue() const-
432{-
433 if (!is_object)-
434 return a->at(index);-
435 return o->valueAt(index);-
436}-
437-
438-
439QDebug operator<<(QDebug dbg, const QJsonValue &o)-
440{-
441 QDebugStateSaver saver(dbg);-
442 switch (o.t) {-
443 case QJsonValue::Undefined:-
444 dbg << "QJsonValue(undefined)";-
445 break;-
446 case QJsonValue::Null:-
447 dbg << "QJsonValue(null)";-
448 break;-
449 case QJsonValue::Bool:-
450 dbg.nospace() << "QJsonValue(bool, " << o.toBool() << ')';-
451 break;-
452 case QJsonValue::Double:-
453 dbg.nospace() << "QJsonValue(double, " << o.toDouble() << ')';-
454 break;-
455 case QJsonValue::String:-
456 dbg.nospace() << "QJsonValue(string, " << o.toString() << ')';-
457 break;-
458 case QJsonValue::Array:-
459 dbg.nospace() << "QJsonValue(array, ";-
460 dbg << o.toArray();-
461 dbg << ')';-
462 break;-
463 case QJsonValue::Object:-
464 dbg.nospace() << "QJsonValue(object, ";-
465 dbg << o.toObject();-
466 dbg << ')';-
467 break;-
468 }-
469 return dbg;-
470}-
471-
472-
473-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9