/*! \internal */ int Value::requiredStorage(QJsonValue &v, bool *compressed) { *compressed = false; switch (v.t) { case QJsonValue::Double: if (QJsonPrivate::compressedNumber(v.dbl) != INT_MAX) { *compressed = true; return 0; } return sizeof(double); case QJsonValue::String: { QString s = v.toString(); *compressed = QJsonPrivate::useCompressed(s); return QJsonPrivate::qStringSize(s, *compressed); } case QJsonValue::Array: case QJsonValue::Object: if (v.d && v.d->compactionCounter) { v.detach(); v.d->compact(); v.base = static_cast<QJsonPrivate::Base *>(v.d->header->root()); } return v.base ? v.base->size : sizeof(QJsonPrivate::Base); case QJsonValue::Undefined: case QJsonValue::Null: case QJsonValue::Bool: break; } return 0; }