diff options
author | Giuseppe D'Angelo <dangelog@gmail.com> | 2012-03-11 00:26:17 +0000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-14 10:53:24 +0100 |
commit | 08790636f2b19a6bab97e3462211bec5b2d23c45 (patch) | |
tree | 77e6dc5a9b79e4c0e3462c6bf345d0283cde144b /src | |
parent | b8112c8526a6e261c6e00bdb4fe6ceef3876d01f (diff) |
QRegularExpression: QMetaType and QVariant support
Removed the Q_DECLARE_METATYPE in favour of first-class support
inside QMetaType and QVariant.
Change-Id: I904236822bfab967dc0fbd4d4cc2bcb68c741adc
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/kernel/qmetatype.cpp | 31 | ||||
-rw-r--r-- | src/corelib/kernel/qmetatype.h | 3 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 34 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant.h | 14 | ||||
-rw-r--r-- | src/corelib/tools/qregularexpression.h | 2 |
5 files changed, 73 insertions, 11 deletions
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 8474635fe7..a61894debd 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -63,6 +63,7 @@ # include "qurl.h" # include "qvariant.h" # include "qabstractitemmodel.h" +# include "qregularexpression.h" #endif #ifndef QT_NO_GEOM_VARIANT @@ -114,6 +115,9 @@ template<> struct TypeDefinition<QModelIndex> { static const bool IsAvailable = #ifdef QT_NO_REGEXP template<> struct TypeDefinition<QRegExp> { static const bool IsAvailable = false; }; #endif +#if defined(QT_BOOTSTRAPPED) || defined(QT_NO_REGEXP) +template<> struct TypeDefinition<QRegularExpression> { static const bool IsAvailable = false; }; +#endif } // namespace /*! @@ -219,6 +223,7 @@ template<> struct TypeDefinition<QRegExp> { static const bool IsAvailable = fals \value QPoint QPoint \value QUrl QUrl \value QRegExp QRegExp + \value QRegularExpression QRegularExpression \value QDateTime QDateTime \value QPointF QPointF \value QPalette QPalette @@ -781,10 +786,15 @@ bool QMetaType::save(QDataStream &stream, int type, const void *data) break; #endif #ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGEXP + case QMetaType::QRegularExpression: + stream << *static_cast<const NS(QRegularExpression)*>(data); + break; +#endif // QT_NO_REGEXP case QMetaType::QEasingCurve: stream << *static_cast<const NS(QEasingCurve)*>(data); break; -#endif +#endif // QT_BOOTSTRAPPED case QMetaType::QFont: case QMetaType::QPixmap: case QMetaType::QBrush: @@ -993,10 +1003,15 @@ bool QMetaType::load(QDataStream &stream, int type, void *data) break; #endif #ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGEXP + case QMetaType::QRegularExpression: + stream >> *static_cast< NS(QRegularExpression)*>(data); + break; +#endif // QT_NO_REGEXP case QMetaType::QEasingCurve: stream >> *static_cast< NS(QEasingCurve)*>(data); break; -#endif +#endif // QT_BOOTSTRAPPED case QMetaType::QFont: case QMetaType::QPixmap: case QMetaType::QBrush: @@ -1149,9 +1164,13 @@ void *QMetaType::create(int type, const void *copy) return new NS(QRegExp)(*static_cast<const NS(QRegExp)*>(copy)); #endif #ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGEXP + case QMetaType::QRegularExpression: + return new NS(QRegularExpression)(*static_cast<const NS(QRegularExpression)*>(copy)); +#endif // QT_NO_REGEXP case QMetaType::QEasingCurve: return new NS(QEasingCurve)(*static_cast<const NS(QEasingCurve)*>(copy)); -#endif +#endif // QT_BOOTSTRAPPED case QMetaType::QUuid: return new NS(QUuid)(*static_cast<const NS(QUuid)*>(copy)); #ifndef QT_BOOTSTRAPPED @@ -1253,9 +1272,13 @@ void *QMetaType::create(int type, const void *copy) return new NS(QRegExp); #endif #ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGEXP + case QMetaType::QRegularExpression: + return new NS(QRegularExpression); +#endif // QT_NO_REGEXP case QMetaType::QEasingCurve: return new NS(QEasingCurve); -#endif +#endif // QT_BOOTSTRAPPED case QMetaType::QUuid: return new NS(QUuid); #ifndef QT_BOOTSTRAPPED diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 4eadb34ea1..d913e37332 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -102,6 +102,7 @@ QT_BEGIN_NAMESPACE F(QUuid, 30, QUuid) \ F(QVariant, 41, QVariant) \ F(QModelIndex, 42, QModelIndex) \ + F(QRegularExpression, 44, QRegularExpression) #define QT_FOR_EACH_STATIC_CORE_POINTER(F)\ F(QObjectStar, 39, QObject*) \ @@ -194,7 +195,7 @@ public: QT_FOR_EACH_STATIC_TYPE(QT_DEFINE_METATYPE_ID) FirstCoreType = Bool, - LastCoreType = Void, + LastCoreType = QRegularExpression, FirstGuiType = QFont, LastGuiType = QPolygonF, FirstWidgetsType = QIcon, diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 8058a06117..e08f4ef53c 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -48,6 +48,7 @@ #include "qdatetime.h" #include "qeasingcurve.h" #include "qlist.h" +#include "qregularexpression.h" #include "qstring.h" #include "qstringlist.h" #include "qurl.h" @@ -106,6 +107,7 @@ struct TypeDefinition { #ifdef QT_BOOTSTRAPPED template<> struct TypeDefinition<QEasingCurve> { static const bool IsAvailable = false; }; template<> struct TypeDefinition<QModelIndex> { static const bool IsAvailable = false; }; +template<> struct TypeDefinition<QRegularExpression> { static const bool IsAvailable = false; }; #endif #ifdef QT_NO_GEOM_VARIANT template<> struct TypeDefinition<QRect> { static const bool IsAvailable = false; }; @@ -1028,6 +1030,7 @@ Q_CORE_EXPORT void QVariantPrivate::unregisterHandler(const int /* Modules::Name \value Rect a QRect \value RectF a QRectF \value RegExp a QRegExp + \value RegularExpression a QRegularExpression \value Region a QRegion \value Size a QSize \value SizeF a QSizeF @@ -1358,6 +1361,14 @@ QVariant::QVariant(const char *val) Constructs a new variant with the regexp value \a regExp. */ +/*! + \fn QVariant::QVariant(const QRegularExpression &re) + + \since 5.0 + + Constructs a new variant with the regular expression value \a re. +*/ + /*! \since 4.2 \fn QVariant::QVariant(Qt::GlobalColor color) @@ -1446,7 +1457,10 @@ QVariant::QVariant(const QUrl &u) { d.is_null = false; d.type = Url; v_construct QVariant::QVariant(const QLocale &l) { d.is_null = false; d.type = Locale; v_construct<QLocale>(&d, l); } #ifndef QT_NO_REGEXP QVariant::QVariant(const QRegExp ®Exp) { d.is_null = false; d.type = RegExp; v_construct<QRegExp>(&d, regExp); } -#endif +#ifndef QT_BOOTSTRAPPED +QVariant::QVariant(const QRegularExpression &re) { d.is_null = false; d.type = QMetaType::QRegularExpression; v_construct<QRegularExpression>(&d, re); } +#endif // QT_BOOTSTRAPPED +#endif // QT_NO_REGEXP QVariant::QVariant(Qt::GlobalColor color) { create(62, &color); } /*! @@ -2127,6 +2141,24 @@ QRegExp QVariant::toRegExp() const #endif /*! + \fn QRegularExpression QVariant::toRegularExpression() const + \since 5.0 + + Returns the variant as a QRegularExpression if the variant has type() \l + QRegularExpression; otherwise returns an empty QRegularExpression. + + \sa canConvert(), convert() +*/ +#ifndef QT_BOOTSTRAPPED +#ifndef QT_NO_REGEXP +QRegularExpression QVariant::toRegularExpression() const +{ + return qVariantToHelper<QRegularExpression>(d, handlerManager); +} +#endif +#endif + +/*! \fn QChar QVariant::toChar() const Returns the variant as a QChar if the variant has type() \l Char, diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 4d4b2d51ab..cc502d93a7 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -76,7 +76,8 @@ class QRect; class QRectF; #ifndef QT_NO_REGEXP class QRegExp; -#endif +class QRegularExpression; +#endif // QT_NO_REGEXP class QTextFormat; class QTextLength; class QUrl; @@ -154,6 +155,7 @@ class Q_CORE_EXPORT QVariant Point = QMetaType::QPoint, PointF = QMetaType::QPointF, RegExp = QMetaType::QRegExp, + RegularExpression = QMetaType::QRegularExpression, Hash = QMetaType::QVariantHash, EasingCurve = QMetaType::QEasingCurve, Uuid = QMetaType::QUuid, @@ -239,7 +241,10 @@ class Q_CORE_EXPORT QVariant QVariant(const QLocale &locale); #ifndef QT_NO_REGEXP QVariant(const QRegExp ®Exp); -#endif +#ifndef QT_BOOTSRAPPED + QVariant(const QRegularExpression &re); +#endif // QT_BOOTSTRAPPED +#endif // QT_NO_REGEXP #ifndef QT_BOOTSTRAPPED QVariant(const QEasingCurve &easing); #endif @@ -302,7 +307,10 @@ class Q_CORE_EXPORT QVariant QLocale toLocale() const; #ifndef QT_NO_REGEXP QRegExp toRegExp() const; -#endif +#ifndef QT_BOOTSTRAPPED + QRegularExpression toRegularExpression() const; +#endif // QT_BOOTSTRAPPED +#endif // QT_NO_REGEXP #ifndef QT_BOOTSTRAPPED QEasingCurve toEasingCurve() const; #endif diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h index 3ca83c9e27..57cb29035b 100644 --- a/src/corelib/tools/qregularexpression.h +++ b/src/corelib/tools/qregularexpression.h @@ -239,8 +239,6 @@ Q_DECLARE_TYPEINFO(QRegularExpressionMatchIterator, Q_MOVABLE_TYPE); QT_END_NAMESPACE -Q_DECLARE_METATYPE(QRegularExpression) - QT_END_HEADER #endif // QT_NO_REGEXP |