diff options
author | Jędrzej Nowacki <jedrzej.nowacki@digia.com> | 2014-02-13 16:59:28 +0100 |
---|---|---|
committer | Jędrzej Nowacki <jedrzej.nowacki@digia.com> | 2014-08-28 10:13:04 +0200 |
commit | 918038ad57840f980cf65464d6f1fc4703909629 (patch) | |
tree | 01b8d0f96e6ffe0ffacf51ea45a9103956f110d4 /src/corelib/kernel | |
parent | e311f7ac8bf3b75ba171823701dcdd0e6ff404d8 (diff) |
Mark QByteArrayList as metatype built-in type.
As a side effects it also adds core templates types to the tests
Change-Id: I0e3338e0bffdf21982aa83d404c83288e54411f4
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qmetatype.cpp | 8 | ||||
-rw-r--r-- | src/corelib/kernel/qmetatype.h | 7 | ||||
-rw-r--r-- | src/corelib/kernel/qmetatype_p.h | 1 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant.h | 10 |
5 files changed, 25 insertions, 3 deletions
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 9980e0d901..0647513221 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -65,6 +65,7 @@ # include "qjsonobject.h" # include "qjsonarray.h" # include "qjsondocument.h" +# include "qbytearraylist.h" #endif #ifndef QT_NO_GEOM_VARIANT @@ -270,6 +271,7 @@ struct DefinedTypesFilter { \value QJsonDocument QJsonDocument \value QModelIndex QModelIndex \value QUuid QUuid + \value QByteArrayList QByteArrayList \value User Base value for user types \value UnknownType This is an invalid type id. It is returned from QMetaType for types that are not registered @@ -1191,6 +1193,9 @@ bool QMetaType::save(QDataStream &stream, int type, const void *data) case QMetaType::QVariant: stream << *static_cast<const NS(QVariant)*>(data); break; + case QMetaType::QByteArrayList: + stream << *static_cast<const NS(QByteArrayList)*>(data); + break; #endif case QMetaType::QByteArray: stream << *static_cast<const NS(QByteArray)*>(data); @@ -1414,6 +1419,9 @@ bool QMetaType::load(QDataStream &stream, int type, void *data) case QMetaType::QVariant: stream >> *static_cast< NS(QVariant)*>(data); break; + case QMetaType::QByteArrayList: + stream >> *static_cast< NS(QByteArrayList)*>(data); + break; #endif case QMetaType::QByteArray: stream >> *static_cast< NS(QByteArray)*>(data); diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 32fd5bd153..7870ea5236 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -127,6 +127,7 @@ inline Q_DECL_CONSTEXPR int qMetaTypeId(); F(QVariantMap, 8, QVariantMap) \ F(QVariantList, 9, QVariantList) \ F(QVariantHash, 28, QVariantHash) \ + F(QByteArrayList, 49, QByteArrayList) \ #define QT_FOR_EACH_STATIC_GUI_CLASS(F)\ F(QFont, 64, QFont) \ @@ -180,6 +181,7 @@ inline Q_DECL_CONSTEXPR int qMetaTypeId(); F(QVariantList, -1, QVariantList, "QList<QVariant>") \ F(QVariantMap, -1, QVariantMap, "QMap<QString,QVariant>") \ F(QVariantHash, -1, QVariantHash, "QHash<QString,QVariant>") \ + F(QByteArrayList, -1, QByteArrayList, "QList<QByteArray>") \ #define QT_FOR_EACH_STATIC_TYPE(F)\ QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(F)\ @@ -393,7 +395,7 @@ public: QT_FOR_EACH_STATIC_TYPE(QT_DEFINE_METATYPE_ID) FirstCoreType = Bool, - LastCoreType = QJsonDocument, + LastCoreType = QByteArrayList, FirstGuiType = QFont, LastGuiType = QPolygonF, FirstWidgetsType = QSizePolicy, @@ -419,7 +421,7 @@ public: QEasingCurve = 29, QUuid = 30, QVariant = 41, QModelIndex = 42, QRegularExpression = 44, QJsonValue = 45, QJsonObject = 46, QJsonArray = 47, QJsonDocument = 48, - QObjectStar = 39, SChar = 40, + QByteArrayList = 49, QObjectStar = 39, SChar = 40, Void = 43, QVariantMap = 8, QVariantList = 9, QVariantHash = 28, QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68, @@ -1760,6 +1762,7 @@ QT_FOR_EACH_STATIC_WIDGETS_CLASS(QT_FORWARD_DECLARE_STATIC_TYPES_ITER) typedef QList<QVariant> QVariantList; typedef QMap<QString, QVariant> QVariantMap; typedef QHash<QString, QVariant> QVariantHash; +typedef QList<QByteArray> QByteArrayList; #define Q_DECLARE_METATYPE_TEMPLATE_1ARG(SINGLE_ARG_TEMPLATE) \ QT_BEGIN_NAMESPACE \ diff --git a/src/corelib/kernel/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h index 95b9e2e394..48cb6d6fcc 100644 --- a/src/corelib/kernel/qmetatype_p.h +++ b/src/corelib/kernel/qmetatype_p.h @@ -207,6 +207,7 @@ template<> struct TypeDefinition<QJsonObject> { static const bool IsAvailable = template<> struct TypeDefinition<QJsonValue> { static const bool IsAvailable = false; }; template<> struct TypeDefinition<QModelIndex> { static const bool IsAvailable = false; }; template<> struct TypeDefinition<QUrl> { static const bool IsAvailable = false; }; +template<> struct TypeDefinition<QByteArrayList> { static const bool IsAvailable = false; }; #endif #ifdef QT_NO_GEOM_VARIANT template<> struct TypeDefinition<QRect> { static const bool IsAvailable = false; }; diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 5e8f330a92..29734f902e 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -61,6 +61,7 @@ #include "qjsonobject.h" #include "qjsonarray.h" #include "qjsondocument.h" +#include "qbytearraylist.h" #endif #include "private/qvariant_p.h" #include "qmetatype_p.h" @@ -2841,6 +2842,7 @@ bool QVariant::canConvert(int targetTypeId) const if (targetTypeId == QMetaType::QVariantList && (d.type == QMetaType::QVariantList || d.type == QMetaType::QStringList + || d.type == QMetaType::QByteArrayList || QMetaType::hasRegisteredConverterFunction(d.type, qMetaTypeId<QtMetaTypePrivate::QSequentialIterableImpl>()))) { return true; diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 5ff33cce5f..e141817993 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -51,6 +51,9 @@ #include <QtCore/qstring.h> #include <QtCore/qstringlist.h> #include <QtCore/qobject.h> +#ifndef QT_BOOTSTRAPPED +#include <QtCore/qbytearraylist.h> +#endif QT_BEGIN_NAMESPACE @@ -713,6 +716,11 @@ namespace QtPrivate { if (v.userType() == qMetaTypeId<QStringList>()) { return QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl(reinterpret_cast<const QStringList*>(v.constData()))); } +#ifndef QT_BOOTSTRAPPED + if (v.userType() == qMetaTypeId<QByteArrayList>()) { + return QSequentialIterable(QtMetaTypePrivate::QSequentialIterableImpl(reinterpret_cast<const QByteArrayList*>(v.constData()))); + } +#endif return QSequentialIterable(v.value<QtMetaTypePrivate::QSequentialIterableImpl>()); } }; @@ -735,7 +743,7 @@ namespace QtPrivate { { static QVariantList invoke(const QVariant &v) { - if (v.userType() == qMetaTypeId<QStringList>() || QMetaType::hasRegisteredConverterFunction(v.userType(), qMetaTypeId<QtMetaTypePrivate::QSequentialIterableImpl>())) { + if (v.userType() == qMetaTypeId<QStringList>() || v.userType() == qMetaTypeId<QByteArrayList>() || QMetaType::hasRegisteredConverterFunction(v.userType(), qMetaTypeId<QtMetaTypePrivate::QSequentialIterableImpl>())) { QSequentialIterable iter = QVariantValueHelperInterface<QSequentialIterable>::invoke(v); QVariantList l; l.reserve(iter.size()); |