diff options
Diffstat (limited to 'src/corelib/kernel/qvariant.h')
-rw-r--r-- | src/corelib/kernel/qvariant.h | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 02458a07e0..35c584fa51 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** @@ -123,6 +123,8 @@ class Q_CORE_EXPORT QVariant RegExp = QMetaType::QRegExp, Hash = QMetaType::QVariantHash, EasingCurve = QMetaType::QEasingCurve, + Uuid = QMetaType::QUuid, + ModelIndex = QMetaType::QModelIndex, LastCoreType = QMetaType::LastCoreType, Font = QMetaType::QFont, @@ -370,35 +372,35 @@ class Q_CORE_EXPORT QVariant { return !cmp(v); } protected: - friend inline bool qvariant_cast_helper(const QVariant &, QVariant::Type, void *); - friend void qRegisterGuiVariant(); - friend void qUnregisterGuiVariant(); friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &); #ifndef QT_NO_DEBUG_STREAM friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QVariant &); #endif Private d; - - static const Handler *handler; - +#ifndef Q_NO_TEMPLATE_FRIENDS + template<typename T> + friend inline T qvariant_cast(const QVariant &); +private: +#else +public: +#endif void create(int type, const void *copy); bool cmp(const QVariant &other) const; + bool convert(const int t, void *ptr) const; private: // force compile error, prevent QVariant(bool) to be called - inline QVariant(void *) { Q_ASSERT(false); } + inline QVariant(void *) Q_DECL_EQ_DELETE; #ifdef QT_NO_CAST_FROM_ASCII // force compile error when implicit conversion is not wanted - inline QVariant(const char *) { Q_ASSERT(false); } + inline QVariant(const char *) Q_DECL_EQ_DELETE; #endif public: typedef Private DataPtr; inline DataPtr &data_ptr() { return d; } + inline const DataPtr &data_ptr() const { return d; } }; -inline bool qvariant_cast_helper(const QVariant &v, QVariant::Type tp, void *ptr) -{ return QVariant::handler->convert(&v.d, tp, ptr, 0); } - template <typename T> inline QVariant qVariantFromValue(const T &t) { @@ -488,7 +490,7 @@ template<typename T> inline T qvariant_cast(const QVariant &v) return *reinterpret_cast<const T *>(v.constData()); if (vid < int(QMetaType::User)) { T t; - if (qvariant_cast_helper(v, QVariant::Type(vid), &t)) + if (v.convert(vid, &t)) return t; } return T(); |