From 92f9678055eef647c9e6ebc7fb0ce29b89db5f89 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Mon, 2 Jan 2012 16:25:17 +0100 Subject: Registered QUuid in the metatype system as a builtin type. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6be6129d9f6bf468ba8a5805cfa0f6f79199afb3 Reviewed-by: João Abecasis Reviewed-by: Jędrzej Nowacki Reviewed-by: Prasanth Ullattil --- src/corelib/kernel/qmetatype.cpp | 14 ++++++++++++++ src/corelib/kernel/qmetatype.h | 3 ++- src/corelib/kernel/qvariant.cpp | 23 +++++++++++++++++++++-- src/corelib/kernel/qvariant.h | 1 + 4 files changed, 38 insertions(+), 3 deletions(-) (limited to 'src/corelib') diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index e72cd7c575..38bfd2987c 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -50,6 +50,7 @@ #include "qvector.h" #include "qlocale.h" #include "qeasingcurve.h" +#include "quuid.h" #include "qvariant.h" #include "qmetatypeswitcher_p.h" @@ -788,6 +789,9 @@ bool QMetaType::save(QDataStream &stream, int type, const void *data) return false; qMetaTypeWidgetsHelper[type - FirstWidgetsType].saveOp(stream, data); break; + case QMetaType::QUuid: + stream << *static_cast(data); + break; default: { const QVector * const ct = customTypes(); if (!ct) @@ -995,6 +999,9 @@ bool QMetaType::load(QDataStream &stream, int type, void *data) return false; qMetaTypeWidgetsHelper[type - FirstWidgetsType].loadOp(stream, data); break; + case QMetaType::QUuid: + stream >> *static_cast< NS(QUuid)*>(data); + break; default: { const QVector * const ct = customTypes(); if (!ct) @@ -1115,6 +1122,8 @@ void *QMetaType::create(int type, const void *copy) case QMetaType::QEasingCurve: return new NS(QEasingCurve)(*static_cast(copy)); #endif + case QMetaType::QUuid: + return new NS(QUuid)(*static_cast(copy)); case QMetaType::Void: return 0; default: @@ -1212,6 +1221,8 @@ void *QMetaType::create(int type, const void *copy) case QMetaType::QEasingCurve: return new NS(QEasingCurve); #endif + case QMetaType::QUuid: + return new NS(QUuid); case QMetaType::Void: return 0; default: @@ -1379,6 +1390,9 @@ void QMetaType::destroy(int type, void *data) delete static_cast< NS(QEasingCurve)* >(data); break; #endif + case QMetaType::QUuid: + delete static_cast< NS(QUuid)* >(data); + break; case QMetaType::Void: break; default: { diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index dd5b1f8ed5..9bc949105c 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -98,6 +98,7 @@ QT_MODULE(Core) F(QPointF, 26, QPointF) \ F(QRegExp, 27, QRegExp) \ F(QEasingCurve, 29, QEasingCurve) \ + F(QUuid, 30, QUuid) \ F(QVariant, 138, QVariant) \ #define QT_FOR_EACH_STATIC_CORE_POINTER(F)\ @@ -182,7 +183,7 @@ public: // these are merged with QVariant QT_FOR_EACH_STATIC_TYPE(QT_DEFINE_METATYPE_ID) - LastCoreType = QEasingCurve, + LastCoreType = QUuid, FirstGuiType = QFont, LastGuiType = QPolygonF, FirstWidgetsType = QIcon, diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index f898cc4823..abffe53ab7 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -52,6 +52,7 @@ #include "qstringlist.h" #include "qurl.h" #include "qlocale.h" +#include "quuid.h" #include "private/qvariant_p.h" #include "qmetatype_p.h" @@ -345,6 +346,9 @@ static bool convert(const QVariant::Private *d, QVariant::Type t, void *result, case QVariant::Url: *str = v_cast(d)->toString(); break; + case QVariant::Uuid: + *str = v_cast(d)->toString(); + break; default: return false; } @@ -709,6 +713,15 @@ static bool convert(const QVariant::Private *d, QVariant::Type t, void *result, return *ok; } #endif + case QVariant::Uuid: + switch (d->type) { + case QVariant::String: + *static_cast(result) = QUuid(*v_cast(d)); + break; + default: + return false; + } + break; default: return false; } @@ -807,6 +820,9 @@ static void streamDebug(QDebug dbg, const QVariant &v) dbg.nospace() << v.toRectF(); break; #endif + case QVariant::Uuid: + dbg.nospace() << v.value().toString(); + break; case QVariant::BitArray: //dbg.nospace() << v.toBitArray(); break; @@ -1073,6 +1089,7 @@ Q_CORE_EXPORT void QVariantPrivate::unregisterHandler(const int /* Modules::Name \value DateTime a QDateTime \value Double a double \value EasingCurve a QEasingCurve + \value Uuid a QUuid \value Font a QFont \value Hash a QVariantHash \value Icon a QIcon @@ -2402,7 +2419,7 @@ static const quint32 qCanConvertMatrix[QVariant::LastCoreType + 1] = | 1 << QVariant::UInt | 1 << QVariant::Bool | 1 << QVariant::Double | 1 << QVariant::Date | 1 << QVariant::Time | 1 << QVariant::DateTime | 1 << QVariant::LongLong | 1 << QVariant::ULongLong | 1 << QVariant::Char - | 1 << QVariant::Url, + | 1 << QVariant::Url | 1 << QVariant::Uuid, /*QStringList*/ 1 << QVariant::List | 1 << QVariant::String, @@ -2441,7 +2458,9 @@ static const quint32 qCanConvertMatrix[QVariant::LastCoreType + 1] = /*QHash*/ 0, -/*QEasingCurve*/ 0 +/*QEasingCurve*/ 0, + +/*QUuid*/ 1 << QVariant::String }; /*! diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 9b477e5dd6..8d00cb0713 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -123,6 +123,7 @@ class Q_CORE_EXPORT QVariant RegExp = QMetaType::QRegExp, Hash = QMetaType::QVariantHash, EasingCurve = QMetaType::QEasingCurve, + Uuid = QMetaType::QUuid, LastCoreType = QMetaType::LastCoreType, Font = QMetaType::QFont, -- cgit v1.2.3