summaryrefslogtreecommitdiffstats
path: root/src/corelib/text/qstringview.h
Commit message (Collapse)AuthorAgeFilesLines
* Add QStringView::count(...)Lars Knoll2020-10-151-0/+3
| | | | | | | | | | | Also this one as a porting aid towards Qt 6. The implementation is using QString to keep things simple. Task-number: QTBUG-86516 Change-Id: Ic033b8678c76a608af8acfc5fab547aeb159933e Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add QStringView::split()Lars Knoll2020-10-151-0/+14
| | | | | | | | | | The implementation has to live in qstringlist.h and qregularexpression.h, as those classes are only forward declared in qstring.h. Task-number: QTBUG-86516 Change-Id: Ia9b3ff48999d1c2e7df905191ee192764b309d08 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Add toInt() and friends to QStringViewLars Knoll2020-10-121-0/+11
| | | | | | | | | | | | | The implementations are not trimmed for efficiency, but as a porting help for Qt 6. Because of that, they simply use the methods available in QString. Task-number: QTBUG-86516 Change-Id: I39ea04a6c96ca43f3a88a9be4e63a5dea4a4e479 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Loosen the API contract for QStringView::left() and friendsLars Knoll2020-10-121-4/+12
| | | | | | | | | | | | | Remove the assertions in QStringView::left() and friends and turn them into runtime bounds checking instead. This changes the behavior to be compatible with what we do in Qt 6 (see change d2833a3ce5af725d66ef9338f2a61b766dd3cb2d) and simplifies porting from QStringRef to QStringView. Task-number: QTBUG-86516 Change-Id: I28e3beb4f42c7b9dfc52813cbcfa322a3df5685a Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Fix warning in QStringView::compare(QChar) on qsizetype->intThiago Macieira2020-07-311-1/+4
| | | | | | | | | | | | | | | | | | | size() - 1 is converted to int as the result, but size() is a qsizetype and could be bigger than INT_MAX. So rewrite to not depend on the cast. This was introduced on b2f79cceb11dfd15ac9eea631bc18ad6b036eb91. I could have replaced size() - 1 with int(size() > 1) - 1, but that's even more complex. To simplify, I split the function in two while retaining the C++11 constexpr requirements. Bonus: removes the use of the ambiguously-named "empty()" function that looks like a verb. Fixes: QTBUG-85665 Change-Id: Ieffc3453b88c4517a1dbfffd162338fdb084a376 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 61ccfefb25d61da95a1a1cdf0313da1448dc23c6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QStringView: adapt to C++20 constexpr std::basic_stringMarc Mutz2020-03-121-1/+1
| | | | | | | | | | | | Just mark the constructor constexpr. If std::basic_string isn't, then this will be silently dropped. If std::basic_string is, we can now construct QStringView from std::basic_strings at compile-time. [ChangeLog][QtCore][QStringView] Conversion from std::basic_string can now be constexpr (when std::basic_string is). Change-Id: Ia608f1a71c9a24f417b3e21e150ff6bd3d2f4fc4 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QLatin1String/QStringView: add (missing) member compare()Marc Mutz2020-03-051-0/+5
| | | | | | | | | | | [ChangeLog][QtCore][QLatin1String] Added compare(). [ChangeLog][QtCore][QStringView] Added compare() overloads taking QLatin1String, QChar. Change-Id: Ie2aa400299cb63495e65ce29b2a32133066de826 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Introduce QString(View)::isValidUtf16Giuseppe D'Angelo2019-12-201-0/+2
| | | | | | | | | | | | | | | | | | | QString(View)s can be built or manipulated in ways that make them contain/refer to improperly encoded UTF-16 data. Problem is, we don't have public APIs to check whether a string contains valid UTF-16. This knowledge is precious if the string is to be fed in algorithms, regular expressions, etc. that expect validated input (e.g. QRegularExpression can be faster if it can assume valid UTF-16, otherwise it has to employ extra checks). Add a function that does the validation. [ChangeLog][QtCore][QStringView] Added QStringView::isValidUtf16. [ChangeLog][QtCore][QString] Added QString::isValidUtf16. Change-Id: Idd699183f6ec08013046c76c6a5a7c524b6c6fbc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Deprecate QStringViewLiteralMarc Mutz2019-08-101-0/+7
| | | | | | | | | | | | | | | | | As a macro, we can't directly deprecate it, but need to make it call something deprecated. That is a new ctor with a new enum type added. The type might be useful for other such ventures, so put it into qglobal.h Remove the QT_NO_UNICODE_LITERAL protection, as it's always false these days, and QT_UNICODE_LITERAL is unconditionally #defined a 20 lines above. [ChangeLog][QtCore][QStringView] Deprecated the (undocumented) QStringViewLiteral macro. Just use u"" or QStringView(u"") instead. Change-Id: I9141320225037e1bc6b7f920bf01a9d0144fdac2 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QStringView: clean up storage_typeMarc Mutz2019-07-291-6/+0
| | | | | | | | | | | Now that all supported compilers support char16_t, we don't need the storage_type == wchar_t hack for MSVC anymore. Remove it. Adapt docs. Change-Id: I55df6c8a9fa5a9c7e6f53ba89f3850956b369061 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* QStringView: two fixes for newly-added toWCharArray()Marc Mutz2019-07-291-1/+1
| | | | | | | | | | | | | | | | | | | | Amends e89fbd8c3aa50a24e5fc02ab710ccca67fce98e2. - While QString::data() never returns nullptr, QStringView::data() may, which makes calling QStringView{}.toWCharArray() UB on Windows (since memcpy's 2nd argument must never be nullptr, even if the size is zero). Fix by protecting the memcpy call. - QStringView, by design, does not use out-of-line member functions, because calling these forces the QStringView object onto the stack. Fix by making inline. Also use the more efficient qToStringViewIgnoringNull(), as the result does not depend on QString::isNull() (no characters are written either way), and add a missing article to the function's docs. Change-Id: I5d6b31361522812b0db8303b93c43d4b9ed11933 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Move text-related code out of corelib/tools/ to corelib/text/Edward Welbourne2019-07-101-0/+338
This includes byte array, string, char, unicode, locale, collation and regular expressions. Change-Id: I8b125fa52c8c513eb57a0f1298b91910e5a0d786 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>