Frameworks/QStringView porting cheat sheet: Difference between revisions
Ahmad Samir (talk | contribs) (Created page with "According to [https://code.qt.io/cgit/qt/qt5compat.git/tree/src/core5/text this upstream Git repo], QStringRef will be moved to a qt5combat module in Qt6, which means KDE code...") |
Ahmad Samir (talk | contribs) m (Make method names bold, more visible) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
According to [https://code.qt.io/cgit/qt/qt5compat.git/tree/src/core5/text this upstream Git repo], QStringRef will be moved to a | According to [https://code.qt.io/cgit/qt/qt5compat.git/tree/src/core5/text this upstream Git repo], QStringRef will be moved to a qt5compat module in Qt6, which means KDE code needs to be ported away from it. The candidate replacement is QStringView. Since the latter's API is apparently still being modified upstream, not all methods are available in Qt 5.13 (which is the version that KDE Frameworks require at the time of writing this), this is a "cheat sheet" of sorts, listing all the QStringView methods that aren't available in Qt 5.13, or that have a different behaviour than the QString counterpart. | ||
See the relevant discussion in https://phabricator.kde.org/T13913 (some of those methods introduced in Qt 5.15 as porting aid may be slow/ugly). | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 5: | Line 7: | ||
! Method !! Notes | ! Method !! Notes | ||
|- | |- | ||
| QString arg(Args &&... args) const || Since Qt5.14 | | QString '''arg'''(Args &&... args) const || Since Qt5.14 | ||
|- | |- | ||
| int compare(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | | int '''compare'''(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | ||
|- | |- | ||
| int compare(QChar ch) const || Since Qt5.14 | | int '''compare'''(QChar ch) const || Since Qt5.14 | ||
|- | |- | ||
| int compare(QChar ch, Qt::CaseSensitivity cs) const || Since Qt5.14 | | int '''compare'''(QChar ch, Qt::CaseSensitivity cs) const || Since Qt5.14 | ||
|- | |- | ||
| bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | | bool '''contains'''(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | ||
|- | |- | ||
| bool contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | | bool '''contains'''(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | ||
|- | |- | ||
| bool contains(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | | bool '''contains'''(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | ||
|- | |- | ||
| qsizetype count(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.15.2 | | qsizetype '''count'''(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.15.2 | ||
|- | |- | ||
| qsizetype count(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.15.2 | | qsizetype '''count'''(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.15.2 | ||
|- | |- | ||
| qsizetype indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | | qsizetype '''indexOf'''(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | ||
|- | |- | ||
| qsizetype indexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | | qsizetype '''indexOf'''(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | ||
|- | |- | ||
| qsizetype indexOf(QLatin1String l1, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | | qsizetype '''indexOf'''(QLatin1String l1, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | ||
|- | |- | ||
| bool isValidUtf16() const || Since Qt5.15 | | bool '''isValidUtf16'''() const || Since Qt5.15 | ||
|- | |- | ||
| qsizetype lastIndexOf(QChar c, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | | qsizetype '''lastIndexOf'''(QChar c, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | ||
|- | |- | ||
| qsizetype lastIndexOf(QStringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | | qsizetype '''lastIndexOf'''(QStringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | ||
|- | |- | ||
| qsizetype lastIndexOf(QLatin1String l1, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | | qsizetype '''lastIndexOf'''(QLatin1String l1, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.14 | ||
|- | |- | ||
| QStringView left(qsizetype length) const || Until 5.15.1, the behavior was undefined when length < 0 or length > size(). Since 5.15.2, the behavior is compatible with QString::left() | | QStringView '''left'''(qsizetype length) const || Until 5.15.1, the behavior was undefined when length < 0 or length > size(). Since 5.15.2, the behavior is compatible with '''QString::left()''' | ||
|- | |- | ||
| QStringView mid(qsizetype start) const || Until 5.15.1, the behavior was undefined when start < 0 or start > size(). Since 5.15.2, the behavior is compatible with QString::mid() | | QStringView '''mid'''(qsizetype start) const || Until 5.15.1, the behavior was undefined when start < 0 or start > size(). Since 5.15.2, the behavior is compatible with '''QString::mid()''' | ||
|- | |- | ||
| QStringView mid(qsizetype start, qsizetype length) const || Until 5.15.1, the behavior was undefined when start < 0 or start > size(). Since 5.15.2, the behavior is compatible with QString::mid() | | QStringView '''mid'''(qsizetype start, qsizetype length) const || Until 5.15.1, the behavior was undefined when start < 0 or start > size(). Since 5.15.2, the behavior is compatible with '''QString::mid()''' | ||
|- | |- | ||
| QStringView right(qsizetype length) const || Until 5.15.1, the behavior was undefined when length < 0 or length > size(). Since 5.15.2, the behavior is compatible with QString::right() | | QStringView '''right'''(qsizetype length) const || Until 5.15.1, the behavior was undefined when length < 0 or length > size(). Since 5.15.2, the behavior is compatible with '''QString::right()''' | ||
|- | |- | ||
| QList<QStringView> split(QStringView sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.15.2 | | QList<QStringView> '''split'''(QStringView sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.15.2 | ||
|- | |- | ||
| QList<QStringView> split(QChar sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.15.2 | | QList<QStringView> '''split'''(QChar sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const || Since Qt5.15.2 | ||
|- | |- | ||
| QList<QStringView> split(const QRegularExpression &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts) const || Since Qt5.15.2 | | QList<QStringView> '''split'''(const QRegularExpression &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts) const || Since Qt5.15.2 | ||
|- | |- | ||
| double toDouble(bool *ok = nullptr) const || Since Qt5.15.2 | | double '''toDouble'''(bool *ok = nullptr) const || Since Qt5.15.2 | ||
|- | |- | ||
| float toFloat(bool *ok = nullptr) const || Since Qt5.15.2 | | float '''toFloat'''(bool *ok = nullptr) const || Since Qt5.15.2 | ||
|- | |- | ||
| int toInt(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | | int '''toInt'''(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | ||
|- | |- | ||
| long toLong(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | | long '''toLong'''(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | ||
|- | |- | ||
| qlonglong toLongLong(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | | qlonglong '''toLongLong'''(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | ||
|- | |- | ||
| short toShort(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | | short '''toShort'''(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | ||
|- | |- | ||
| uint toUInt(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | | uint '''toUInt'''(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | ||
|- | |- | ||
| ulong toULong(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | | ulong '''toULong'''(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | ||
|- | |- | ||
| qulonglong toULongLong(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | | qulonglong '''toULongLong'''(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | ||
|- | |- | ||
| ushort toUShort(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | | ushort '''toUShort'''(bool *ok = nullptr, int base = 10) const || Since Qt5.15.2 | ||
|- | |- | ||
| int toWCharArray(wchar_t *array) const || Since Qt5.14 | | int '''toWCharArray'''(wchar_t *array) const || Since Qt5.14 | ||
|} | |} |
Latest revision as of 09:40, 1 December 2020
According to this upstream Git repo, QStringRef will be moved to a qt5compat module in Qt6, which means KDE code needs to be ported away from it. The candidate replacement is QStringView. Since the latter's API is apparently still being modified upstream, not all methods are available in Qt 5.13 (which is the version that KDE Frameworks require at the time of writing this), this is a "cheat sheet" of sorts, listing all the QStringView methods that aren't available in Qt 5.13, or that have a different behaviour than the QString counterpart.
See the relevant discussion in https://phabricator.kde.org/T13913 (some of those methods introduced in Qt 5.15 as porting aid may be slow/ugly).
Method | Notes |
---|---|
QString arg(Args &&... args) const | Since Qt5.14 |
int compare(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.14 |
int compare(QChar ch) const | Since Qt5.14 |
int compare(QChar ch, Qt::CaseSensitivity cs) const | Since Qt5.14 |
bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.14 |
bool contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.14 |
bool contains(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.14 |
qsizetype count(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.15.2 |
qsizetype count(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.15.2 |
qsizetype indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.14 |
qsizetype indexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.14 |
qsizetype indexOf(QLatin1String l1, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.14 |
bool isValidUtf16() const | Since Qt5.15 |
qsizetype lastIndexOf(QChar c, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.14 |
qsizetype lastIndexOf(QStringView str, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.14 |
qsizetype lastIndexOf(QLatin1String l1, qsizetype from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.14 |
QStringView left(qsizetype length) const | Until 5.15.1, the behavior was undefined when length < 0 or length > size(). Since 5.15.2, the behavior is compatible with QString::left() |
QStringView mid(qsizetype start) const | Until 5.15.1, the behavior was undefined when start < 0 or start > size(). Since 5.15.2, the behavior is compatible with QString::mid() |
QStringView mid(qsizetype start, qsizetype length) const | Until 5.15.1, the behavior was undefined when start < 0 or start > size(). Since 5.15.2, the behavior is compatible with QString::mid() |
QStringView right(qsizetype length) const | Until 5.15.1, the behavior was undefined when length < 0 or length > size(). Since 5.15.2, the behavior is compatible with QString::right() |
QList<QStringView> split(QStringView sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.15.2 |
QList<QStringView> split(QChar sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const | Since Qt5.15.2 |
QList<QStringView> split(const QRegularExpression &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts) const | Since Qt5.15.2 |
double toDouble(bool *ok = nullptr) const | Since Qt5.15.2 |
float toFloat(bool *ok = nullptr) const | Since Qt5.15.2 |
int toInt(bool *ok = nullptr, int base = 10) const | Since Qt5.15.2 |
long toLong(bool *ok = nullptr, int base = 10) const | Since Qt5.15.2 |
qlonglong toLongLong(bool *ok = nullptr, int base = 10) const | Since Qt5.15.2 |
short toShort(bool *ok = nullptr, int base = 10) const | Since Qt5.15.2 |
uint toUInt(bool *ok = nullptr, int base = 10) const | Since Qt5.15.2 |
ulong toULong(bool *ok = nullptr, int base = 10) const | Since Qt5.15.2 |
qulonglong toULongLong(bool *ok = nullptr, int base = 10) const | Since Qt5.15.2 |
ushort toUShort(bool *ok = nullptr, int base = 10) const | Since Qt5.15.2 |
int toWCharArray(wchar_t *array) const | Since Qt5.14 |