summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/global/qprocessordetection.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_polling.cpp3
-rw-r--r--src/corelib/io/qfilesystemwatcher_polling_p.h3
-rw-r--r--src/corelib/io/qstandardpaths_mac.cpp2
-rw-r--r--src/corelib/itemmodels/qidentityproxymodel.cpp80
-rw-r--r--src/corelib/json/qjsondocument.h3
-rw-r--r--src/corelib/json/qjsonparser.cpp7
-rw-r--r--src/corelib/kernel/qmetaobject.cpp6
-rw-r--r--src/corelib/kernel/qmetatype.cpp302
-rw-r--r--src/corelib/kernel/qmetatype.h24
-rw-r--r--src/corelib/kernel/qmetatype_p.h4
-rw-r--r--src/corelib/kernel/qobject.cpp2
-rw-r--r--src/corelib/kernel/qpointer.cpp1
-rw-r--r--src/corelib/kernel/qpointer.h6
-rw-r--r--src/corelib/tools/qregexp.cpp4
-rw-r--r--src/corelib/tools/qsimd.cpp6
16 files changed, 140 insertions, 317 deletions
diff --git a/src/corelib/global/qprocessordetection.h b/src/corelib/global/qprocessordetection.h
index d62794e706..04e0f19f06 100644
--- a/src/corelib/global/qprocessordetection.h
+++ b/src/corelib/global/qprocessordetection.h
@@ -58,6 +58,10 @@
Q_BYTE_ORDER appropriately for the target processor. For bi-endian
processors, we try to auto-detect the byte order using the __BIG_ENDIAN__,
__LITTLE_ENDIAN__, or __BYTE_ORDER__ preprocessor macros.
+
+ Note: when adding support for new processors, be sure to update
+ config.tests/arch/arch.cpp to ensure that configure can detect the target
+ and host architectures.
*/
/* Machine byte-order, reuse preprocessor provided macros when available */
diff --git a/src/corelib/io/qfilesystemwatcher_polling.cpp b/src/corelib/io/qfilesystemwatcher_polling.cpp
index 92d0a2b6b0..c29fe8c264 100644
--- a/src/corelib/io/qfilesystemwatcher_polling.cpp
+++ b/src/corelib/io/qfilesystemwatcher_polling.cpp
@@ -42,6 +42,8 @@
#include "qfilesystemwatcher_polling_p.h"
#include <QtCore/qtimer.h>
+#ifndef QT_NO_FILESYSTEMWATCHER
+
QT_BEGIN_NAMESPACE
QPollingFileSystemWatcherEngine::QPollingFileSystemWatcherEngine(QObject *parent)
@@ -149,3 +151,4 @@ void QPollingFileSystemWatcherEngine::timeout()
}
QT_END_NAMESPACE
+#endif // !QT_NO_FILESYSTEMWATCHER
diff --git a/src/corelib/io/qfilesystemwatcher_polling_p.h b/src/corelib/io/qfilesystemwatcher_polling_p.h
index e50082c6d3..926c3baa07 100644
--- a/src/corelib/io/qfilesystemwatcher_polling_p.h
+++ b/src/corelib/io/qfilesystemwatcher_polling_p.h
@@ -62,6 +62,7 @@
#include "qfilesystemwatcher_p.h"
+#ifndef QT_NO_FILESYSTEMWATCHER
QT_BEGIN_NAMESPACE
enum { PollingInterval = 1000 };
@@ -122,6 +123,6 @@ private:
};
QT_END_NAMESPACE
-
+#endif // !QT_NO_FILESYSTEMWATCHER
#endif // QFILESYSTEMWATCHER_POLLING_P_H
diff --git a/src/corelib/io/qstandardpaths_mac.cpp b/src/corelib/io/qstandardpaths_mac.cpp
index e3779220af..2890ead48a 100644
--- a/src/corelib/io/qstandardpaths_mac.cpp
+++ b/src/corelib/io/qstandardpaths_mac.cpp
@@ -97,7 +97,7 @@ static QString getFullPath(const FSRef &ref)
{
QByteArray ba(2048, 0);
if (FSRefMakePath(&ref, reinterpret_cast<UInt8 *>(ba.data()), ba.size()) == noErr)
- return QString::fromUtf8(ba).normalized(QString::NormalizationForm_C);
+ return QString::fromUtf8(ba.constData()).normalized(QString::NormalizationForm_C);
return QString();
}
diff --git a/src/corelib/itemmodels/qidentityproxymodel.cpp b/src/corelib/itemmodels/qidentityproxymodel.cpp
index 1f95ac0660..9cac40469a 100644
--- a/src/corelib/itemmodels/qidentityproxymodel.cpp
+++ b/src/corelib/itemmodels/qidentityproxymodel.cpp
@@ -328,87 +328,87 @@ QVariant QIdentityProxyModel::headerData(int section, Qt::Orientation orientatio
/*!
\reimp
*/
-void QIdentityProxyModel::setSourceModel(QAbstractItemModel* sourceModel)
+void QIdentityProxyModel::setSourceModel(QAbstractItemModel* newSourceModel)
{
beginResetModel();
- if (sourceModel) {
- disconnect(sourceModel, SIGNAL(rowsAboutToBeInserted(const QModelIndex &, int, int)),
+ if (sourceModel()) {
+ disconnect(sourceModel(), SIGNAL(rowsAboutToBeInserted(const QModelIndex &, int, int)),
this, SLOT(_q_sourceRowsAboutToBeInserted(const QModelIndex &, int, int)));
- disconnect(sourceModel, SIGNAL(rowsInserted(const QModelIndex &, int, int)),
+ disconnect(sourceModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)),
this, SLOT(_q_sourceRowsInserted(const QModelIndex &, int, int)));
- disconnect(sourceModel, SIGNAL(rowsAboutToBeRemoved(const QModelIndex &, int, int)),
+ disconnect(sourceModel(), SIGNAL(rowsAboutToBeRemoved(const QModelIndex &, int, int)),
this, SLOT(_q_sourceRowsAboutToBeRemoved(const QModelIndex &, int, int)));
- disconnect(sourceModel, SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
+ disconnect(sourceModel(), SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
this, SLOT(_q_sourceRowsRemoved(const QModelIndex &, int, int)));
- disconnect(sourceModel, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
+ disconnect(sourceModel(), SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
this, SLOT(_q_sourceRowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- disconnect(sourceModel, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
+ disconnect(sourceModel(), SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
this, SLOT(_q_sourceRowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- disconnect(sourceModel, SIGNAL(columnsAboutToBeInserted(const QModelIndex &, int, int)),
+ disconnect(sourceModel(), SIGNAL(columnsAboutToBeInserted(const QModelIndex &, int, int)),
this, SLOT(_q_sourceColumnsAboutToBeInserted(const QModelIndex &, int, int)));
- disconnect(sourceModel, SIGNAL(columnsInserted(const QModelIndex &, int, int)),
+ disconnect(sourceModel(), SIGNAL(columnsInserted(const QModelIndex &, int, int)),
this, SLOT(_q_sourceColumnsInserted(const QModelIndex &, int, int)));
- disconnect(sourceModel, SIGNAL(columnsAboutToBeRemoved(const QModelIndex &, int, int)),
+ disconnect(sourceModel(), SIGNAL(columnsAboutToBeRemoved(const QModelIndex &, int, int)),
this, SLOT(_q_sourceColumnsAboutToBeRemoved(const QModelIndex &, int, int)));
- disconnect(sourceModel, SIGNAL(columnsRemoved(const QModelIndex &, int, int)),
+ disconnect(sourceModel(), SIGNAL(columnsRemoved(const QModelIndex &, int, int)),
this, SLOT(_q_sourceColumnsRemoved(const QModelIndex &, int, int)));
- disconnect(sourceModel, SIGNAL(columnsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
+ disconnect(sourceModel(), SIGNAL(columnsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
this, SLOT(_q_sourceColumnsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- disconnect(sourceModel, SIGNAL(columnsMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
+ disconnect(sourceModel(), SIGNAL(columnsMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
this, SLOT(_q_sourceColumnsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- disconnect(sourceModel, SIGNAL(modelAboutToBeReset()),
+ disconnect(sourceModel(), SIGNAL(modelAboutToBeReset()),
this, SLOT(_q_sourceModelAboutToBeReset()));
- disconnect(sourceModel, SIGNAL(modelReset()),
+ disconnect(sourceModel(), SIGNAL(modelReset()),
this, SLOT(_q_sourceModelReset()));
- disconnect(sourceModel, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
+ disconnect(sourceModel(), SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
this, SLOT(_q_sourceDataChanged(const QModelIndex &, const QModelIndex &)));
- disconnect(sourceModel, SIGNAL(headerDataChanged(Qt::Orientation,int,int)),
+ disconnect(sourceModel(), SIGNAL(headerDataChanged(Qt::Orientation,int,int)),
this, SLOT(_q_sourceHeaderDataChanged(Qt::Orientation,int,int)));
- disconnect(sourceModel, SIGNAL(layoutAboutToBeChanged()),
+ disconnect(sourceModel(), SIGNAL(layoutAboutToBeChanged()),
this, SLOT(_q_sourceLayoutAboutToBeChanged()));
- disconnect(sourceModel, SIGNAL(layoutChanged()),
+ disconnect(sourceModel(), SIGNAL(layoutChanged()),
this, SLOT(_q_sourceLayoutChanged()));
}
- QAbstractProxyModel::setSourceModel(sourceModel);
+ QAbstractProxyModel::setSourceModel(newSourceModel);
- if (sourceModel) {
- connect(sourceModel, SIGNAL(rowsAboutToBeInserted(const QModelIndex &, int, int)),
+ if (sourceModel()) {
+ connect(sourceModel(), SIGNAL(rowsAboutToBeInserted(const QModelIndex &, int, int)),
SLOT(_q_sourceRowsAboutToBeInserted(const QModelIndex &, int, int)));
- connect(sourceModel, SIGNAL(rowsInserted(const QModelIndex &, int, int)),
+ connect(sourceModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)),
SLOT(_q_sourceRowsInserted(const QModelIndex &, int, int)));
- connect(sourceModel, SIGNAL(rowsAboutToBeRemoved(const QModelIndex &, int, int)),
+ connect(sourceModel(), SIGNAL(rowsAboutToBeRemoved(const QModelIndex &, int, int)),
SLOT(_q_sourceRowsAboutToBeRemoved(const QModelIndex &, int, int)));
- connect(sourceModel, SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
+ connect(sourceModel(), SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
SLOT(_q_sourceRowsRemoved(const QModelIndex &, int, int)));
- connect(sourceModel, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
+ connect(sourceModel(), SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
SLOT(_q_sourceRowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- connect(sourceModel, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
+ connect(sourceModel(), SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
SLOT(_q_sourceRowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- connect(sourceModel, SIGNAL(columnsAboutToBeInserted(const QModelIndex &, int, int)),
+ connect(sourceModel(), SIGNAL(columnsAboutToBeInserted(const QModelIndex &, int, int)),
SLOT(_q_sourceColumnsAboutToBeInserted(const QModelIndex &, int, int)));
- connect(sourceModel, SIGNAL(columnsInserted(const QModelIndex &, int, int)),
+ connect(sourceModel(), SIGNAL(columnsInserted(const QModelIndex &, int, int)),
SLOT(_q_sourceColumnsInserted(const QModelIndex &, int, int)));
- connect(sourceModel, SIGNAL(columnsAboutToBeRemoved(const QModelIndex &, int, int)),
+ connect(sourceModel(), SIGNAL(columnsAboutToBeRemoved(const QModelIndex &, int, int)),
SLOT(_q_sourceColumnsAboutToBeRemoved(const QModelIndex &, int, int)));
- connect(sourceModel, SIGNAL(columnsRemoved(const QModelIndex &, int, int)),
+ connect(sourceModel(), SIGNAL(columnsRemoved(const QModelIndex &, int, int)),
SLOT(_q_sourceColumnsRemoved(const QModelIndex &, int, int)));
- connect(sourceModel, SIGNAL(columnsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
+ connect(sourceModel(), SIGNAL(columnsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
SLOT(_q_sourceColumnsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- connect(sourceModel, SIGNAL(columnsMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
+ connect(sourceModel(), SIGNAL(columnsMoved(const QModelIndex &, int, int, const QModelIndex &, int)),
SLOT(_q_sourceColumnsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
- connect(sourceModel, SIGNAL(modelAboutToBeReset()),
+ connect(sourceModel(), SIGNAL(modelAboutToBeReset()),
SLOT(_q_sourceModelAboutToBeReset()));
- connect(sourceModel, SIGNAL(modelReset()),
+ connect(sourceModel(), SIGNAL(modelReset()),
SLOT(_q_sourceModelReset()));
- connect(sourceModel, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
+ connect(sourceModel(), SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
SLOT(_q_sourceDataChanged(const QModelIndex &, const QModelIndex &)));
- connect(sourceModel, SIGNAL(headerDataChanged(Qt::Orientation,int,int)),
+ connect(sourceModel(), SIGNAL(headerDataChanged(Qt::Orientation,int,int)),
SLOT(_q_sourceHeaderDataChanged(Qt::Orientation,int,int)));
- connect(sourceModel, SIGNAL(layoutAboutToBeChanged()),
+ connect(sourceModel(), SIGNAL(layoutAboutToBeChanged()),
SLOT(_q_sourceLayoutAboutToBeChanged()));
- connect(sourceModel, SIGNAL(layoutChanged()),
+ connect(sourceModel(), SIGNAL(layoutChanged()),
SLOT(_q_sourceLayoutChanged()));
}
diff --git a/src/corelib/json/qjsondocument.h b/src/corelib/json/qjsondocument.h
index 7eca0302db..e39dc6a27c 100644
--- a/src/corelib/json/qjsondocument.h
+++ b/src/corelib/json/qjsondocument.h
@@ -67,7 +67,8 @@ struct Q_CORE_EXPORT QJsonParseError
IllegalNumber,
StringEscapeSequence,
StringUTF8Scan,
- EndOfString
+ EndOfString,
+ MissingObject
};
int offset;
diff --git a/src/corelib/json/qjsonparser.cpp b/src/corelib/json/qjsonparser.cpp
index a83685da22..b1e6a5a5c7 100644
--- a/src/corelib/json/qjsonparser.cpp
+++ b/src/corelib/json/qjsonparser.cpp
@@ -244,6 +244,10 @@ bool Parser::parseObject()
if (token != ValueSeparator)
break;
token = nextToken();
+ if (token == EndObject) {
+ lastError = QJsonParseError::MissingObject;
+ return false;
+ }
}
DEBUG << "end token=" << token;
@@ -449,6 +453,9 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
DEBUG << "value: object";
END;
return true;
+ case EndArray:
+ lastError = QJsonParseError::MissingObject;
+ return false;
default:
--json;
if (!parseNumber(val, baseOffset))
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index a8c21657cb..185314520b 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -291,13 +291,13 @@ QObject *QMetaObject::newInstance(QGenericArgument val0,
if (idx < 0)
return 0;
- QVariant ret(QMetaType::QObjectStar, (void*)0);
- void *param[] = {ret.data(), val0.data(), val1.data(), val2.data(), val3.data(), val4.data(),
+ QObject *returnValue = 0;
+ void *param[] = {&returnValue, val0.data(), val1.data(), val2.data(), val3.data(), val4.data(),
val5.data(), val6.data(), val7.data(), val8.data(), val9.data()};
if (static_metacall(CreateInstance, idx, param) >= 0)
return 0;
- return *reinterpret_cast<QObject**>(param[0]);
+ return returnValue;
}
/*!
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index a61894debd..8c2b5a8665 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -1066,6 +1066,60 @@ bool QMetaType::load(QDataStream &stream, int type, void *data)
return true;
}
#endif // QT_NO_DATASTREAM
+namespace {
+class TypeCreator {
+ template<typename T, bool IsAcceptedType = DefinedTypesFilter::Acceptor<T>::IsAccepted>
+ struct CreatorImpl {
+ static void *Create(const int /* type */, const void *copy)
+ {
+ // Using qMetaTypeCreateHelper<T> adds function call cost, even if it is a template (gcc).
+ // This "copy" check is moved out from the switcher by compiler (at least by gcc)
+ return copy ? new T(*static_cast<const T*>(copy)) : new T();
+ }
+ };
+ template<typename T>
+ struct CreatorImpl<T, /* IsAcceptedType = */ false> {
+ static void *Create(const int type, const void *copy)
+ {
+ if (QTypeModuleInfo<T>::IsGui) {
+ if (Q_LIKELY(qMetaTypeGuiHelper))
+ return qMetaTypeGuiHelper[type - QMetaType::FirstGuiType].creator(copy);
+ }
+ if (QTypeModuleInfo<T>::IsWidget) {
+ if (Q_LIKELY(qMetaTypeWidgetsHelper))
+ return qMetaTypeWidgetsHelper[type - QMetaType::FirstWidgetsType].creator(copy);
+ }
+ // This point can be reached only for known types that definition is not available, for example
+ // in bootstrap mode. We have no other choice then ignore it.
+ return 0;
+ }
+ };
+public:
+ TypeCreator(const int type)
+ : m_type(type)
+ {}
+
+ template<typename T>
+ void *delegate(const T *copy) { return CreatorImpl<T>::Create(m_type, copy); }
+ void *delegate(const void*) { return 0; }
+ void *delegate(const QMetaTypeSwitcher::UnknownType *) { return 0; }
+ void *delegate(const QMetaTypeSwitcher::NotBuiltinType *copy)
+ {
+ QMetaType::Creator creator;
+ const QVector<QCustomTypeInfo> * const ct = customTypes();
+ {
+ QReadLocker locker(customTypesLock());
+ if (Q_UNLIKELY(m_type < QMetaType::User || !ct || ct->count() <= m_type - QMetaType::User))
+ return 0;
+ creator = ct->at(m_type - QMetaType::User).creator;
+ }
+ Q_ASSERT_X(creator, "void *QMetaType::create(int type, const void *copy)", "The type was not properly registered");
+ return creator(copy);
+ }
+private:
+ const int m_type;
+};
+} // namespace
/*!
Returns a copy of \a copy, assuming it is of type \a type. If \a
@@ -1075,244 +1129,8 @@ bool QMetaType::load(QDataStream &stream, int type, void *data)
*/
void *QMetaType::create(int type, const void *copy)
{
- if (copy) {
- switch(type) {
- case QMetaType::VoidStar:
- case QMetaType::QObjectStar:
- case QMetaType::QWidgetStar:
- return new void *(*static_cast<void* const *>(copy));
- case QMetaType::Long:
- return new long(*static_cast<const long*>(copy));
- case QMetaType::Int:
- return new int(*static_cast<const int*>(copy));
- case QMetaType::Short:
- return new short(*static_cast<const short*>(copy));
- case QMetaType::Char:
- return new char(*static_cast<const char*>(copy));
- case QMetaType::ULong:
- return new ulong(*static_cast<const ulong*>(copy));
- case QMetaType::UInt:
- return new uint(*static_cast<const uint*>(copy));
- case QMetaType::LongLong:
- return new qlonglong(*static_cast<const qlonglong*>(copy));
- case QMetaType::ULongLong:
- return new qulonglong(*static_cast<const qulonglong*>(copy));
- case QMetaType::UShort:
- return new ushort(*static_cast<const ushort*>(copy));
- case QMetaType::UChar:
- return new uchar(*static_cast<const uchar*>(copy));
- case QMetaType::Bool:
- return new bool(*static_cast<const bool*>(copy));
- case QMetaType::Float:
- return new float(*static_cast<const float*>(copy));
- case QMetaType::Double:
- return new double(*static_cast<const double*>(copy));
- case QMetaType::QChar:
- return new NS(QChar)(*static_cast<const NS(QChar)*>(copy));
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QVariantMap:
- return new NS(QVariantMap)(*static_cast<const NS(QVariantMap)*>(copy));
- case QMetaType::QVariantHash:
- return new NS(QVariantHash)(*static_cast<const NS(QVariantHash)*>(copy));
- case QMetaType::QVariantList:
- return new NS(QVariantList)(*static_cast<const NS(QVariantList)*>(copy));
- case QMetaType::QVariant:
- return new NS(QVariant)(*static_cast<const NS(QVariant)*>(copy));
-#endif
- case QMetaType::QByteArray:
- return new NS(QByteArray)(*static_cast<const NS(QByteArray)*>(copy));
- case QMetaType::QString:
- return new NS(QString)(*static_cast<const NS(QString)*>(copy));
- case QMetaType::QStringList:
- return new NS(QStringList)(*static_cast<const NS(QStringList)*>(copy));
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QBitArray:
- return new NS(QBitArray)(*static_cast<const NS(QBitArray)*>(copy));
-#endif
- case QMetaType::QDate:
- return new NS(QDate)(*static_cast<const NS(QDate)*>(copy));
- case QMetaType::QTime:
- return new NS(QTime)(*static_cast<const NS(QTime)*>(copy));
- case QMetaType::QDateTime:
- return new NS(QDateTime)(*static_cast<const NS(QDateTime)*>(copy));
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QUrl:
- return new NS(QUrl)(*static_cast<const NS(QUrl)*>(copy));
-#endif
- case QMetaType::QLocale:
- return new NS(QLocale)(*static_cast<const NS(QLocale)*>(copy));
-#ifndef QT_NO_GEOM_VARIANT
- case QMetaType::QRect:
- return new NS(QRect)(*static_cast<const NS(QRect)*>(copy));
- case QMetaType::QRectF:
- return new NS(QRectF)(*static_cast<const NS(QRectF)*>(copy));
- case QMetaType::QSize:
- return new NS(QSize)(*static_cast<const NS(QSize)*>(copy));
- case QMetaType::QSizeF:
- return new NS(QSizeF)(*static_cast<const NS(QSizeF)*>(copy));
- case QMetaType::QLine:
- return new NS(QLine)(*static_cast<const NS(QLine)*>(copy));
- case QMetaType::QLineF:
- return new NS(QLineF)(*static_cast<const NS(QLineF)*>(copy));
- case QMetaType::QPoint:
- return new NS(QPoint)(*static_cast<const NS(QPoint)*>(copy));
- case QMetaType::QPointF:
- return new NS(QPointF)(*static_cast<const NS(QPointF)*>(copy));
-#endif
-#ifndef QT_NO_REGEXP
- case QMetaType::QRegExp:
- 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 // QT_BOOTSTRAPPED
- case QMetaType::QUuid:
- return new NS(QUuid)(*static_cast<const NS(QUuid)*>(copy));
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QModelIndex:
- return new NS(QModelIndex)(*static_cast<const NS(QModelIndex)*>(copy));
-#endif
- case QMetaType::UnknownType:
- case QMetaType::Void:
- return 0;
- default:
- ;
- }
- } else {
- switch(type) {
- case QMetaType::VoidStar:
- case QMetaType::QObjectStar:
- case QMetaType::QWidgetStar:
- return new void *;
- case QMetaType::Long:
- return new long;
- case QMetaType::Int:
- return new int;
- case QMetaType::Short:
- return new short;
- case QMetaType::Char:
- return new char;
- case QMetaType::ULong:
- return new ulong;
- case QMetaType::UInt:
- return new uint;
- case QMetaType::LongLong:
- return new qlonglong;
- case QMetaType::ULongLong:
- return new qulonglong;
- case QMetaType::UShort:
- return new ushort;
- case QMetaType::UChar:
- return new uchar;
- case QMetaType::Bool:
- return new bool;
- case QMetaType::Float:
- return new float;
- case QMetaType::Double:
- return new double;
- case QMetaType::QChar:
- return new NS(QChar);
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QVariantMap:
- return new NS(QVariantMap);
- case QMetaType::QVariantHash:
- return new NS(QVariantHash);
- case QMetaType::QVariantList:
- return new NS(QVariantList);
- case QMetaType::QVariant:
- return new NS(QVariant);
-#endif
- case QMetaType::QByteArray:
- return new NS(QByteArray);
- case QMetaType::QString:
- return new NS(QString);
- case QMetaType::QStringList:
- return new NS(QStringList);
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QBitArray:
- return new NS(QBitArray);
-#endif
- case QMetaType::QDate:
- return new NS(QDate);
- case QMetaType::QTime:
- return new NS(QTime);
- case QMetaType::QDateTime:
- return new NS(QDateTime);
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QUrl:
- return new NS(QUrl);
-#endif
- case QMetaType::QLocale:
- return new NS(QLocale);
-#ifndef QT_NO_GEOM_VARIANT
- case QMetaType::QRect:
- return new NS(QRect);
- case QMetaType::QRectF:
- return new NS(QRectF);
- case QMetaType::QSize:
- return new NS(QSize);
- case QMetaType::QSizeF:
- return new NS(QSizeF);
- case QMetaType::QLine:
- return new NS(QLine);
- case QMetaType::QLineF:
- return new NS(QLineF);
- case QMetaType::QPoint:
- return new NS(QPoint);
- case QMetaType::QPointF:
- return new NS(QPointF);
-#endif
-#ifndef QT_NO_REGEXP
- case QMetaType::QRegExp:
- 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 // QT_BOOTSTRAPPED
- case QMetaType::QUuid:
- return new NS(QUuid);
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QModelIndex:
- return new NS(QModelIndex);
-#endif
- case QMetaType::UnknownType:
- case QMetaType::Void:
- return 0;
- default:
- ;
- }
- }
-
- Creator creator = 0;
- if (type >= FirstGuiType && type <= LastGuiType) {
- if (!qMetaTypeGuiHelper)
- return 0;
- creator = qMetaTypeGuiHelper[type - FirstGuiType].creator;
- } else if (type >= FirstWidgetsType && type <= LastWidgetsType) {
- if (!qMetaTypeWidgetsHelper)
- return 0;
- creator = qMetaTypeWidgetsHelper[type - FirstWidgetsType].creator;
- } else {
- const QVector<QCustomTypeInfo> * const ct = customTypes();
- QReadLocker locker(customTypesLock());
- if (type < User || !ct || ct->count() <= type - User)
- return 0;
- if (ct->at(type - User).typeName.isEmpty())
- return 0;
- creator = ct->at(type - User).creator;
- }
-
- return creator(copy);
+ TypeCreator typeCreator(type);
+ return QMetaTypeSwitcher::switcher<void*>(typeCreator, type, copy);
}
namespace {
@@ -1610,13 +1428,9 @@ class Flags
template<typename T, bool IsAcceptedType = DefinedTypesFilter::Acceptor<T>::IsAccepted>
struct FlagsImpl
{
- static quint32 Flags(const int type)
+ static quint32 Flags(const int /* type */)
{
- return (!QTypeInfo<T>::isStatic * QMetaType::MovableType)
- | (QTypeInfo<T>::isComplex * QMetaType::NeedsConstruction)
- | (QTypeInfo<T>::isComplex * QMetaType::NeedsDestruction)
- | (type == QMetaType::QObjectStar ? QMetaType::PointerToQObject : 0)
- | (type == QMetaType::QWidgetStar ? QMetaType::PointerToQObject : 0);
+ return QtPrivate::QMetaTypeTypeFlags<T>::Flags;
}
};
template<typename T>
diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h
index d913e37332..aa73785dac 100644
--- a/src/corelib/kernel/qmetatype.h
+++ b/src/corelib/kernel/qmetatype.h
@@ -447,6 +447,17 @@ namespace QtPrivate {
template <class Result, class Arg0> struct IsPointerToTypeDerivedFromQObject<Result(*)(Arg0)> { enum { Value = false }; };
template <class Result, class Arg0, class Arg1> struct IsPointerToTypeDerivedFromQObject<Result(*)(Arg0, Arg1)> { enum { Value = false }; };
template <class Result, class Arg0, class Arg1, class Arg2> struct IsPointerToTypeDerivedFromQObject<Result(*)(Arg0, Arg1, Arg2)> { enum { Value = false }; };
+
+ template<typename T>
+ struct QMetaTypeTypeFlags
+ {
+ enum { Flags = (!QTypeInfo<T>::isStatic ? QMetaType::MovableType : 0)
+ | (QTypeInfo<T>::isComplex ? QMetaType::NeedsConstruction : 0)
+ | (QTypeInfo<T>::isComplex ? QMetaType::NeedsDestruction : 0)
+ | (IsPointerToTypeDerivedFromQObject<T>::Value ? QMetaType::PointerToQObject : 0)
+ | (Q_IS_ENUM(T) ? QMetaType::IsEnumeration : 0)
+ };
+ };
}
template <typename T>
@@ -460,18 +471,7 @@ int qRegisterMetaType(const char *typeName
if (typedefOf != -1)
return QMetaType::registerTypedef(typeName, typedefOf);
- QMetaType::TypeFlags flags;
- if (!QTypeInfo<T>::isStatic)
- flags |= QMetaType::MovableType;
- if (QTypeInfo<T>::isComplex) {
- flags |= QMetaType::NeedsConstruction;
- flags |= QMetaType::NeedsDestruction;
- }
- if (QtPrivate::IsPointerToTypeDerivedFromQObject<T>::Value)
- flags |= QMetaType::PointerToQObject;
- if (Q_IS_ENUM(T))
- flags |= QMetaType::IsEnumeration;
-
+ QMetaType::TypeFlags flags(QtPrivate::QMetaTypeTypeFlags<T>::Flags);
return QMetaType::registerType(typeName, qMetaTypeDeleteHelper<T>,
qMetaTypeCreateHelper<T>,
qMetaTypeDestructHelper<T>,
diff --git a/src/corelib/kernel/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h
index b50521c7a6..c73f8d0a20 100644
--- a/src/corelib/kernel/qmetatype_p.h
+++ b/src/corelib/kernel/qmetatype_p.h
@@ -155,9 +155,7 @@ public:
/*constructor*/(qMetaTypeConstructHelper<Type>), \
/*destructor*/(qMetaTypeDestructHelper<Type>), \
/*size*/(QTypeInfo<Type>::sizeOf), \
- /*flags*/(!QTypeInfo<Type>::isStatic * QMetaType::MovableType) \
- | (QTypeInfo<Type>::isComplex * QMetaType::NeedsConstruction) \
- | (QTypeInfo<Type>::isComplex * QMetaType::NeedsDestruction) \
+ /*flags*/QtPrivate::QMetaTypeTypeFlags<Type>::Flags \
}
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index edbb84a657..914441f7a8 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -3188,7 +3188,7 @@ void QMetaObject::connectSlotsByName(QObject *o)
}
if (sigIndex < 0)
continue;
- if (QMetaObjectPrivate::connect(co, sigIndex, o, i)) {
+ if (Connection(QMetaObjectPrivate::connect(co, sigIndex, o, i))) {
foundIt = true;
break;
}
diff --git a/src/corelib/kernel/qpointer.cpp b/src/corelib/kernel/qpointer.cpp
index b983bef5fe..f81451d906 100644
--- a/src/corelib/kernel/qpointer.cpp
+++ b/src/corelib/kernel/qpointer.cpp
@@ -44,7 +44,6 @@
\brief The QPointer class is a template class that provides guarded pointers to QObject.
\ingroup objectmodel
- \obsolete Use QWeakPointer instead.
A guarded pointer, QPointer<T>, behaves like a normal C++
pointer \c{T *}, except that it is automatically set to 0 when the
diff --git a/src/corelib/kernel/qpointer.h b/src/corelib/kernel/qpointer.h
index 9b4f8e4332..836c13e3fc 100644
--- a/src/corelib/kernel/qpointer.h
+++ b/src/corelib/kernel/qpointer.h
@@ -49,10 +49,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#if QT_DEPRECATED_SINCE(5,0)
-
template <class T>
-class QT_DEPRECATED QPointer
+class QPointer
{
QWeakPointer<T> wp;
@@ -161,8 +159,6 @@ inline bool operator!= (int i, const QPointer<T> &p)
{ Q_ASSERT(i == 0); return !i && !p.isNull(); }
#endif
-#endif // QT_DEPRECATED_SINCE(5,0)
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp
index 29b3424315..6462b3df92 100644
--- a/src/corelib/tools/qregexp.cpp
+++ b/src/corelib/tools/qregexp.cpp
@@ -3918,8 +3918,8 @@ static void invalidateEngine(QRegExpPrivate *priv)
\value RegExp A rich Perl-like pattern matching syntax. This is
the default.
- \value RegExp2 Like RegExp, but with \l{greedy quantifiers}. This
- will be the default in Qt 5. (Introduced in Qt 4.2.)
+ \value RegExp2 Like RegExp, but with \l{greedy quantifiers}.
+ (Introduced in Qt 4.2.)
\value Wildcard This provides a simple pattern matching syntax
similar to that used by shells (command interpreters) for "file
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp
index b3d2d62819..6c07480f99 100644
--- a/src/corelib/tools/qsimd.cpp
+++ b/src/corelib/tools/qsimd.cpp
@@ -108,12 +108,12 @@ static inline uint detectProcessorFeatures()
uint features = 0;
#if defined(Q_OS_LINUX)
- int auxv = ::qt_safe_open("/proc/self/auxv", O_RDONLY);
+ int auxv = qt_safe_open("/proc/self/auxv", O_RDONLY);
if (auxv != -1) {
unsigned long vector[64];
int nread;
while (features == 0) {
- nread = ::qt_safe_read(auxv, (char *)vector, sizeof vector);
+ nread = qt_safe_read(auxv, (char *)vector, sizeof vector);
if (nread <= 0) {
// EOF or error
break;
@@ -130,7 +130,7 @@ static inline uint detectProcessorFeatures()
}
}
- ::qt_safe_close(auxv);
+ qt_safe_close(auxv);
return features;
}
// fall back if /proc/self/auxv wasn't found