From 03326a2fec416405b437089874f6439e937bbada Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 27 May 2020 09:58:12 +0200 Subject: Move implementation of QVector/List back to qlist.h And name the main class QList. That's also the one we document. This gives less porting pain for our users, and a lot less churn in our API, as we use QList in Qt 5 in 95% of our API. In addition, it gives more consistent naming with QStringList and QByteArrayList and disambiguates QList vs QVector(2|3|4)D. Fixes: QTBUG-84468 Change-Id: I3cba9d1d3179969d8bf9320b31be2230d021d1a9 Reviewed-by: Volker Hilsheimer --- src/corelib/text/qbytearraylist.h | 16 ++++----- src/corelib/text/qstring.h | 1 - src/corelib/text/qstringalgorithms.h | 3 +- src/corelib/text/qstringlist.h | 70 ++++++++++++++++++------------------ src/corelib/text/qstringtokenizer.h | 2 +- 5 files changed, 45 insertions(+), 47 deletions(-) (limited to 'src/corelib/text') diff --git a/src/corelib/text/qbytearraylist.h b/src/corelib/text/qbytearraylist.h index d02fa6d20f..3f85a24329 100644 --- a/src/corelib/text/qbytearraylist.h +++ b/src/corelib/text/qbytearraylist.h @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include +#include #ifndef QBYTEARRAYLIST_H #define QBYTEARRAYLIST_H @@ -49,12 +49,12 @@ QT_BEGIN_NAMESPACE #if !defined(QT_NO_JAVA_STYLE_ITERATORS) -typedef QVectorIterator QByteArrayListIterator; -typedef QMutableVectorIterator QMutableByteArrayListIterator; +typedef QListIterator QByteArrayListIterator; +typedef QMutableListIterator QMutableByteArrayListIterator; #endif #ifndef Q_CLANG_QDOC -typedef QVector QByteArrayList; +typedef QList QByteArrayList; namespace QtPrivate { QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *separator, int separatorLength); @@ -63,14 +63,14 @@ namespace QtPrivate { #endif #ifdef Q_CLANG_QDOC -class QByteArrayList : public QVector +class QByteArrayList : public QList #else -template <> struct QVectorSpecialMethods +template <> struct QListSpecialMethods #endif { #ifndef Q_CLANG_QDOC protected: - ~QVectorSpecialMethods() = default; + ~QListSpecialMethods() = default; #endif public: inline QByteArray join() const @@ -81,7 +81,7 @@ public: { return QtPrivate::QByteArrayList_join(self(), &sep, 1); } private: - typedef QVector Self; + typedef QList Self; Self *self() { return static_cast(this); } const Self *self() const { return static_cast(this); } }; diff --git a/src/corelib/text/qstring.h b/src/corelib/text/qstring.h index 77a95c6280..f14644d956 100644 --- a/src/corelib/text/qstring.h +++ b/src/corelib/text/qstring.h @@ -77,7 +77,6 @@ class QRegularExpressionMatch; class QString; class QStringList; class QStringRef; -template class QVector; namespace QtPrivate { template class BoolList; diff --git a/src/corelib/text/qstringalgorithms.h b/src/corelib/text/qstringalgorithms.h index f1aa052eac..3b67739232 100644 --- a/src/corelib/text/qstringalgorithms.h +++ b/src/corelib/text/qstringalgorithms.h @@ -41,7 +41,7 @@ #define QSTRINGALGORITHMS_H #include - +#include #if 0 #pragma qt_class(QStringAlgorithms) #endif @@ -52,7 +52,6 @@ class QByteArray; class QLatin1String; class QStringView; class QChar; -template class QVector; namespace QtPrivate { diff --git a/src/corelib/text/qstringlist.h b/src/corelib/text/qstringlist.h index b94671746b..9c4daedd4b 100644 --- a/src/corelib/text/qstringlist.h +++ b/src/corelib/text/qstringlist.h @@ -38,7 +38,7 @@ ** ****************************************************************************/ -#include +#include #ifndef QSTRINGLIST_H #define QSTRINGLIST_H @@ -53,21 +53,21 @@ QT_BEGIN_NAMESPACE class QRegularExpression; #if !defined(QT_NO_JAVA_STYLE_ITERATORS) -typedef QVectorIterator QStringListIterator; -typedef QMutableVectorIterator QMutableStringListIterator; +using QStringListIterator = QListIterator; +using QMutableStringListIterator = QMutableListIterator; #endif class QStringList; #ifdef Q_QDOC -class QStringList : public QVector +class QStringList : public QList #else -template <> struct QVectorSpecialMethods +template <> struct QListSpecialMethods #endif { #ifndef Q_QDOC protected: - ~QVectorSpecialMethods() = default; + ~QListSpecialMethods() = default; #endif public: inline void sort(Qt::CaseSensitivity cs = Qt::CaseSensitive); @@ -101,23 +101,23 @@ private: }; // ### Qt6: check if there's a better way -class QStringList : public QVector +class QStringList : public QList { #endif public: inline QStringList() noexcept { } inline explicit QStringList(const QString &i) { append(i); } - inline QStringList(const QVector &l) : QVector(l) { } - inline QStringList(QVector &&l) noexcept : QVector(std::move(l)) { } - inline QStringList(std::initializer_list args) : QVector(args) { } + inline QStringList(const QList &l) : QList(l) { } + inline QStringList(QList &&l) noexcept : QList(std::move(l)) { } + inline QStringList(std::initializer_list args) : QList(args) { } template = true> inline QStringList(InputIterator first, InputIterator last) - : QVector(first, last) { } + : QList(first, last) { } - QStringList &operator=(const QVector &other) - { QVector::operator=(other); return *this; } - QStringList &operator=(QVector &&other) noexcept - { QVector::operator=(std::move(other)); return *this; } + QStringList &operator=(const QList &other) + { QList::operator=(other); return *this; } + QStringList &operator=(QList &&other) noexcept + { QList::operator=(std::move(other)); return *this; } #if QT_STRINGVIEW_LEVEL < 2 inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; @@ -131,7 +131,7 @@ public: { append(str); return *this; } inline QStringList &operator<<(const QStringList &l) { *this += l; return *this; } - inline QStringList &operator<<(const QVector &l) + inline QStringList &operator<<(const QList &l) { *this += l; return *this; } inline int indexOf(QStringView str, int from = 0) const; @@ -145,16 +145,16 @@ public: inline int lastIndexOf(const QRegularExpression &re, int from = -1) const; #endif // QT_CONFIG(regularexpression) - using QVector::indexOf; - using QVector::lastIndexOf; + using QList::indexOf; + using QList::lastIndexOf; }; Q_DECLARE_TYPEINFO(QStringList, Q_MOVABLE_TYPE); #ifndef Q_QDOC -inline QStringList *QVectorSpecialMethods::self() +inline QStringList *QListSpecialMethods::self() { return static_cast(this); } -inline const QStringList *QVectorSpecialMethods::self() const +inline const QStringList *QListSpecialMethods::self() const { return static_cast(this); } namespace QtPrivate { @@ -190,45 +190,45 @@ namespace QtPrivate { #endif // QT_CONFIG(regularexpression) } -inline void QVectorSpecialMethods::sort(Qt::CaseSensitivity cs) +inline void QListSpecialMethods::sort(Qt::CaseSensitivity cs) { QtPrivate::QStringList_sort(self(), cs); } -inline int QVectorSpecialMethods::removeDuplicates() +inline int QListSpecialMethods::removeDuplicates() { return QtPrivate::QStringList_removeDuplicates(self()); } #if QT_STRINGVIEW_LEVEL < 2 -inline QString QVectorSpecialMethods::join(const QString &sep) const +inline QString QListSpecialMethods::join(const QString &sep) const { return QtPrivate::QStringList_join(self(), sep.constData(), sep.length()); } #endif -inline QString QVectorSpecialMethods::join(QStringView sep) const +inline QString QListSpecialMethods::join(QStringView sep) const { return QtPrivate::QStringList_join(self(), sep); } -QString QVectorSpecialMethods::join(QLatin1String sep) const +QString QListSpecialMethods::join(QLatin1String sep) const { return QtPrivate::QStringList_join(*self(), sep); } -inline QString QVectorSpecialMethods::join(QChar sep) const +inline QString QListSpecialMethods::join(QChar sep) const { return QtPrivate::QStringList_join(self(), &sep, 1); } -inline QStringList QVectorSpecialMethods::filter(QStringView str, Qt::CaseSensitivity cs) const +inline QStringList QListSpecialMethods::filter(QStringView str, Qt::CaseSensitivity cs) const { return QtPrivate::QStringList_filter(self(), str, cs); } #if QT_STRINGVIEW_LEVEL < 2 -inline QStringList QVectorSpecialMethods::filter(const QString &str, Qt::CaseSensitivity cs) const +inline QStringList QListSpecialMethods::filter(const QString &str, Qt::CaseSensitivity cs) const { return QtPrivate::QStringList_filter(self(), str, cs); } @@ -251,33 +251,33 @@ inline bool QStringList::contains(QStringView str, Qt::CaseSensitivity cs) const return QtPrivate::QStringList_contains(this, str, cs); } -inline QStringList &QVectorSpecialMethods::replaceInStrings(QStringView before, QStringView after, Qt::CaseSensitivity cs) +inline QStringList &QListSpecialMethods::replaceInStrings(QStringView before, QStringView after, Qt::CaseSensitivity cs) { QtPrivate::QStringList_replaceInStrings(self(), before, after, cs); return *self(); } #if QT_STRINGVIEW_LEVEL < 2 -inline QStringList &QVectorSpecialMethods::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs) +inline QStringList &QListSpecialMethods::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs) { QtPrivate::QStringList_replaceInStrings(self(), before, after, cs); return *self(); } -inline QStringList &QVectorSpecialMethods::replaceInStrings(QStringView before, const QString &after, Qt::CaseSensitivity cs) +inline QStringList &QListSpecialMethods::replaceInStrings(QStringView before, const QString &after, Qt::CaseSensitivity cs) { QtPrivate::QStringList_replaceInStrings(self(), before, qToStringViewIgnoringNull(after), cs); return *self(); } -inline QStringList &QVectorSpecialMethods::replaceInStrings(const QString &before, QStringView after, Qt::CaseSensitivity cs) +inline QStringList &QListSpecialMethods::replaceInStrings(const QString &before, QStringView after, Qt::CaseSensitivity cs) { QtPrivate::QStringList_replaceInStrings(self(), QStringView(before), after, cs); return *self(); } #endif -inline QStringList operator+(const QVector &one, const QStringList &other) +inline QStringList operator+(const QList &one, const QStringList &other) { QStringList n = one; n += other; @@ -305,13 +305,13 @@ inline int QStringList::lastIndexOf(QLatin1String string, int from) const } #if QT_CONFIG(regularexpression) -inline QStringList &QVectorSpecialMethods::replaceInStrings(const QRegularExpression &rx, const QString &after) +inline QStringList &QListSpecialMethods::replaceInStrings(const QRegularExpression &rx, const QString &after) { QtPrivate::QStringList_replaceInStrings(self(), rx, after); return *self(); } -inline QStringList QVectorSpecialMethods::filter(const QRegularExpression &rx) const +inline QStringList QListSpecialMethods::filter(const QRegularExpression &rx) const { return QtPrivate::QStringList_filter(self(), rx); } diff --git a/src/corelib/text/qstringtokenizer.h b/src/corelib/text/qstringtokenizer.h index 31bbbf01c8..d042fbbdab 100644 --- a/src/corelib/text/qstringtokenizer.h +++ b/src/corelib/text/qstringtokenizer.h @@ -40,11 +40,11 @@ #define QSTRINGTOKENIZER_H #include +#include QT_BEGIN_NAMESPACE template class QStringBuilder; -template class QVector; #if defined(Q_QDOC) || 1 || (defined(__cpp_range_based_for) && __cpp_range_based_for >= 201603) # define Q_STRINGTOKENIZER_USE_SENTINEL -- cgit v1.2.3