summaryrefslogtreecommitdiffstats
path: root/src/corelib/text
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix qdoc warnings in QStringViewVolker Hilsheimer2020-09-261-3/+3
| | | | | | | Fix prototype of template member function, and fix see-also reference. Change-Id: Ibb39925063dfeb3fd511f47a1606a0b243d4c2ef Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix qdoc warning: QTextBoundaryFinderVolker Hilsheimer2020-09-261-1/+1
| | | | | Change-Id: Iec38f33519f05b046d6995d6f7eef1557fd5f209 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix some qdoc warnings for QString/View/TokenizerVolker Hilsheimer2020-09-264-39/+62
| | | | | | | | | | | | | | | | | Use correct member function prototype, which requires the template declaration. Remove see-alsos that don't exist. Document parameters for qTokenize. Still lots of warnings from QStringTokenizer, due to the inheritance structure of that template class and the declarations of nested types in undocumented base classes. Also, qdoc doesn't seem to recognize training this-lvalue/this-rvalue declarations for overloads, and considers the second toContainer documentations to override the first. Change-Id: Iadf967d3328ddda52b6f66786836853bddeda79b Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix some qdoc warnings for QAnyStringViewVolker Hilsheimer2020-09-261-4/+4
| | | | | Change-Id: I62f05fea897effff22e5031f02661c01b2e3c45f Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix -Wmaybe-uninitialized warningsJulien Schueller2020-09-261-1/+1
| | | | | | | | | Fixes few of these, for example: qurlrecode.cpp:308:19: warning: 'ucs4' may be used uninitialized in this function [-Wmaybe-uninitialized] *output++ = ucs4; Change-Id: Iaf09fa854102c76b51e6e18556c5ef20212e57cf Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Use c++20 when available at compile timeAllan Sandfeld Jensen2020-09-251-8/+7
| | | | | | | | Also std::end is constexpr where std::next sometimes isn't always with sanitizers active. Change-Id: Ibe4c11eb4945fb286247e841b6a7f6cc3ff1eaa6 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Replace Q_REQUIRED_RESULT with [[nodiscard]]Allan Sandfeld Jensen2020-09-255-279/+279
| | | | | | | It was already used many places directly making the code inconsistent. Change-Id: I3b14bc6c333640fb3ba33c71eba97e78c973e44b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QStringBuilder: use qsizetype for size() methodsEdward Welbourne2020-09-231-15/+15
| | | | | | | | Prompted by a ### Qt 6 comment on one of them. Task-number: QTBUG-85700 Change-Id: Id78a05a7bf77ba04207e0f5bc2a316984b13c9ae Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix qdoc warnings for QByteArrayViewVolker Hilsheimer2020-09-232-5/+8
| | | | | | | Provide simplified declaration of fromArray for qdoc runs; fix a small typo. Change-Id: I8c7300a014270e8ab7f18afd94ee66af4734e0c7 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Fix qdoc warnings from removed enum valuesVolker Hilsheimer2020-09-231-10/+0
| | | | | Change-Id: Icd7a941ed1d8c7a4674482ace4b280a15e592c1a Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Fix some qdoc warnings from QByteArrayVolker Hilsheimer2020-09-231-17/+0
| | | | | | | | A snippet bug, and removed overloads. Change-Id: I82aee3627ba1a4e75e392b28d8ec72d470c395db Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Remove ### comment on QT5_NULL_STRINGSEdward Welbourne2020-09-231-1/+1
| | | | | | | | | Commented recommended turning it off by default in Qt 6, but Lars changed his mind once he saw how much broken on doing that. Task-number: QTBUG-85700 Change-Id: I1aeec408400978821e0e64d082dbb73cf982e54a Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix some qdoc warnings: QRegularExpression parametersVolker Hilsheimer2020-09-222-6/+8
| | | | | Change-Id: Ib4d33327c6c059e11d8615bac0f72d9f028d5860 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Fix some MSVC conversion warningsFriedemann Kleint2020-09-222-2/+2
| | | | | Change-Id: Ib2c1fdb7b84f89201136438362ab5962126ec929 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Q(Any|Utf8)StringView: move array size deduction feature to fromArrayMårten Nordheim2020-09-186-21/+95
| | | | | | | | | | | | | The constructor taking an array literal will now stop at the first null-terminator encountered. And fromArray is introduced which only supports array literals. Constructs a view of the full size. Explicit so it shouldn't be surprising. Change-Id: I1497c33a5c12453a95e87c990abe6335b2817081 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QByteArrayView: move array size deduction feature to fromArrayMårten Nordheim2020-09-182-17/+42
| | | | | | | | | | | | | | | | 1. Make the ctor unable to construct a QByteArrayView from array literals other than 'char'. With the new behavior it would either be (very likely) unintended to pass e.g. a std::byte array to the ctor. And it would be confusing because you would get different sizes based on signed-ness. 2. Introduce fromArray Only supports array literals. Constructs a view of the full size. Explicit so it shouldn't be surprising. Change-Id: Ifdb55eb21057dfe7053b2561bd81e2c9825e9bc6 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Update QByteArray documentation relevant to prepend optimizationAndrei Golubev2020-09-181-7/+39
| | | | | | | | | | [ChangeLog][QtCore][QByteArray] QByteArray is a prepend optimized container similar to QList. Task-number: QTBUG-84320 Change-Id: I45ed1cb75414930f5998be58bfcfe343b1790331 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Update QString documentation relevant to prepend optimizationAndrei Golubev2020-09-151-0/+27
| | | | | | | | | [ChangeLog][QtCore][QString] QString is a prepend optimized container similar to QList. Task-number: QTBUG-84320 Change-Id: Id035aac859a6f404e389f2eeaf20f9eee5bff20c Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Only include <bit> if using post C++17Allan Sandfeld Jensen2020-09-151-1/+1
| | | | | | | Otherwise we hit an #error statement in MSVC standard library. Change-Id: Ib029edf0be8513a80f2640fd9ca75541615a0448 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Remove deprecated APILars Knoll2020-09-152-8/+0
| | | | | | | And replace it's few remaining usages Change-Id: I2dfbbaa5259acfece028606bef1e872c5692f9fe Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Purge Q_{STDLIB,COMPILER}_UNICODE_STRINGSEdward Welbourne2020-09-143-11/+1
| | | | | | | | | These were now always defined, hence redundant. Leave the #define in place so that we can verify we actually do always define it, in a #else of an existing #if check on it. Change-Id: Iea4c3dbc8f9982268bcf81da5ef17fe2ebf5c462 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QString: use QCommonArrayOps::erase instead of custom logicAndrei Golubev2020-09-141-4/+2
| | | | | | | | | | With 6e8985e3576a4439bd66c0767f9912d1e124682c merged we can now use generic erase logic provided by array operations. This commit aligns QString with QList/QByteArray Task-number: QTBUG-84320 Change-Id: I83e9349e2461afd98737df25613aa2d0fd817a71 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use universal C++20 bit operations when availableAllan Sandfeld Jensen2020-09-131-0/+8
| | | | | | | Avoids using compiler builtins, and can in future replace them. Change-Id: I3f0afe7d28b6ba05bcd1c1132b44a8db7b182d8a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make QStringList an alias to QList<QString>Lars Knoll2020-09-124-220/+84
| | | | | | | | | | | | | | | | | | Fix our API, so that QStringList and QList<QString> are the same thing. This required a bit of refactoring in QList and moving the indexOf(), lastIndexOf() and contains() method into QListSpecialMethods. In addition, we need to ensure that the QStringList(const QString&) constructor is still available for compatibility with Qt 5. Once those two are done, all methods in QStringList can be moved into QListSpecialMethods<QString>. Change-Id: Ib8afbf5b6d9df4d0d47051252233506f62335fa3 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QString/QBA: change realloc*Data signatures to use qsizetypeAndrei Golubev2020-09-104-26/+26
| | | | | | | | | | Changed reallocData, reallocGrowData signatures to use qsizetype instead of size_t Change-Id: Iebe7def5430d3d3f4660e19cb6c12612543c5abc Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Remove '\0' space reservation logic in QStringAndrei Golubev2020-09-102-32/+43
| | | | | | | | | Changed QString to use implicit element reserved by QArrayData Task-number: QTBUG-84320 Change-Id: If517500b3f0e71bb8d2989c64815a634aa8dd554 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove '\0' space reservation logic in QByteArrayAndrei Golubev2020-09-102-25/+39
| | | | | | | | | Changed QByteArray to use implicit element reserved by QArrayData Task-number: QTBUG-84320 Change-Id: I2a0091c814a47a5c052da7a83d10cb641834c7bd Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Fix a number of MSVC integer conversion warningsFriedemann Kleint2020-09-102-3/+3
| | | | | | | | Mostly related to qstrlen(). Change-Id: I69e2052c83766e4fc466ed398d0d0eac011a77ec Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Initialize "uc1" variableWang Wei2020-09-081-1/+1
| | | | | | | remove warning for -Wmaybe-uninitialized. Change-Id: Ib17200eb86ee443875a9059b62762b2dc2100634 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QList/QString/QByteArray: no prepend optimized allocation when emptyAndrei Golubev2020-09-072-3/+3
| | | | | | | | | | | | | | | | | | Scoped prepend optimized allocation to only work when prepending into a non-empty container. Otherwise, even appends would be considered prepends since d.size == 0 when container is empty This is, of course, not good for prepend cases but we prefer appends over prepends. My proposal is to figure out what's the best strategy based on use cases and performance measurements. For now, let's just make sure appends are not additionally pessimized Anyhow, this is an implementation detail and should not be considered behavior change (at least not the one that is user noticeable) Task-number: QTBUG-84320 Change-Id: Ibed616a2afa9bc24f78252f15a617bf92e2c6ea3 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Clean up QTextBoundaryFinder and qunicodetoolsLars Knoll2020-09-074-195/+185
| | | | | | | | | | | Make QTBF ready for Qt6 by using qsizetype in the API and use QStringView where it makes sense. Change the exported API of qunicodetools to use QStringView as well and use char16_t internally. Change-Id: I853537bcabf40546a8e60fdf2ee7d751bc371761 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Make QStringMatcher ready for Qt 6Lars Knoll2020-09-072-48/+31
| | | | | | | | | | Use qsizetype for string indices everywhere. Clean up the data structures and remove some Qt 3 or Qt 4 left-overs. This reduces the size of the QStringMatcher from 1056 to 288 bytes. Change-Id: Icc351da8e3aad10a6c940196f52c39f8d2f5bf80 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Remove some comments that are no longer relevantEdward Welbourne2020-09-051-3/+2
| | | | | | | Task-number: QTBUG-85700 Change-Id: I5ce368e8edca2b9483a0f0ef34bc9eb6b4e44574 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add QByteArrayView overloads for push_back and push_frontLars Knoll2020-09-032-18/+30
| | | | | | | | Change-Id: If70f3ac6764958d92dcbab44432b4f4994d20405 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Clean up the QByteArray API and implementationLars Knoll2020-09-032-271/+139
| | | | | | | | | | | | | | Add overloads using a QByteArrayView where it makes sense, and call those inline from the other overloads. Remove overloads that are not required anymore (due to implicit conversion of a const char * to a QByteArrayView). Guard all implementations against passing this object to them. Change-Id: I930156f8b05ce72c32cb8201c70513f2e6e19d3e Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QList/QByteArray/QString: Base GrowsBackwards heuristic on old sizeMårten Nordheim2020-09-032-4/+4
| | | | | | | | | | | If you grow from 10 to 100 characters then even if the point of insertion was the end then it will get the GrowsBackwards option on realloc. By basing it on the oldSize the intention of the position to insert at is better clarified. Change-Id: Ia73f4902e8356d94709556de5704cbfa0e1a3a56 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QString/QList: disregard space at front during reserve()Andrei Golubev2020-09-021-1/+1
| | | | | | | | | | Aligned QString, QList to the new agreed upon behavior Aligned QList::resize() along the way to be consistent with QString/QBA Task-number: QTBUG-84320 Change-Id: Ie9d7b4b6ebe54bd373af78d92906144b383bbfe2 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QByteArray: Disregard space at front during ::reserve(...)Mårten Nordheim2020-09-021-1/+1
| | | | | | | | | | | | Traditionally when calling reserve it's because you expect to append up to X amount of bytes. We should keep that behavior the same. With another patch still in the works current behavior caused an issue with QStringBuilder in QNAM, as mirrored in the testcase attached. Change-Id: I9792a8f158fc9235e3de48ac8b06ac2c10e7f3dc Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Long live Q{Any,Utf8}StringView!Marc Mutz2020-08-319-29/+1957
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to add these two classes at the same time, because QAnyStringView makes all QUtf8StringView relational operators moot. We might want to add some later, esp. for UTF-8/UTf-8 comparisons, to avoid the pessimization that we can't early-out on size() mismatch in QAnyStringView equality operators, but that's an optimization, not a correctness issue, and can be fixed in a source-compatible way even after Qt 6 is released. To deal with the char8_t problem in C++20, make QUtf8StringView a class template out of which two UTF-8 views can be instantiated: the Qt 7 version, which depends on C++20 char8_t as value_type, and the Qt 6 version where value_type is a char. Use inline namespaces to map the QUtf8StringView identifier to one or the other, depending on the C++ version used to compile the user code. The inline namespace names must needs be a bit ugly, as their inline'ness depends on __cpp_char8_t. If we simply used q_v1/q_v2 we'd be blocking these names for Qt inline namespaces forever, because it's likely that inline'ness of other users of inline namespaces in Qt depends on things other than __cpp_char8_t. While inline'ness of namespaces is, theoretically speaking, a compile-time-only property, at least Clang warns about mixed use of inline on a given namespace, so we need to bite the bullet here. This is also the reason for the QT_BEGIN_..._NAMESPACE macros: GCC is ok with the first declaration making a namespace inline, while Clang warns upon re-opening an inline namespace as a non-inline one. [ChangeLog][QtCore][QUtf8StringView] New class. [ChangeLog][QtCore][QAnyStringView] New class. Change-Id: Ia7179760fca0e0b67d52f5accb0a62e389b17913 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Inline some methods that only forward to another overloadLars Knoll2020-08-292-24/+16
| | | | | Change-Id: Iba74962d20c00de8996834f0a003f38c2d2cc3e8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use checked string iteration in case conversionsEdward Welbourne2020-08-294-7/+11
| | | | | | | | | | | | | | | | | | The Unicode table code can only be safely called on valid code-points. So code that calls it must only pass it valid Unicode data. The string iterator's Unchecked Unchecked methods only provide this guarantee when the string being iterated is guaranteed to be valid UTF-16; while client code should only use QString, QStringView and friends on valid UTF-16 data, we have no way to be sure they have respected that. So take the few extra cycles to actually check validity in the course of iterating strings, when the resulting code-points are to be passed to the Unicode table look-ups. Add tests that case mapping doesn't access Unicode tables out of range (it'll trigger the new assertion). Added some comments to qchar.h that helped me understand surrogates. Change-Id: Iec2c3106bf1a875bdaa1d622f6cf94d7007e281e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Prepend optimize QStringAndrei Golubev2020-08-292-59/+100
| | | | | | | | Added prepend optimization to QString Task-number: QTBUG-84320 Change-Id: Iaa8df790a10c56ecceb06f7143718fb94874ce76 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Support GrowsBackwards in QByteArrayAndrei Golubev2020-08-292-57/+92
| | | | | | | | | | | | | | | Updated main QByteArray operations to support prepend-optimization path There are still many things to consider especially algorithms that use QByteArray::data() or do raw memory operations (e.g. memcpy) regardless of the underlying memory layout, which was somewhat valid before but will likely break now given free space > 0 at the beginning of the byte array memory. Looked at existing cases in the scope of QByteArray, they seem to be OK. Hopefully, CI would find missed violations if any Task-number: QTBUG-84320 Change-Id: I7990cda165b8e77a397e41df4e145468e7a86be0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove QUnicodeTools::DefaultOptionsCompatEdward Welbourne2020-08-281-2/+1
| | | | | | | | | | Used in only one place, declared in a private header with a comment saying to remove it. All callers of the one function that had it as default parameter value are passing a value for the parameter. Task-number: QTBUG-85700 Change-Id: Ic72e4df730740a4023b0a43be6bf7acf33a3166b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Convert QStringView::toWCharArray() to return qsizetypeEdward Welbourne2020-08-282-4/+4
| | | | | | | | As requested in a ### Qt6 comment. Task-number: QTBUG-85700 Change-Id: I28a02bf49f4a6455a21a6032179318ce2915b8ca Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Inline QString's conversions to integral types, except long long onesEdward Welbourne2020-08-282-39/+18
| | | | | | | | As requested by a ### Qt6 comment. Task-number: QTBUG-85700 Change-Id: I7c2813c0d8fbc38bcd2f7229de3a9d8e1b8b1f03 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QLatin1String: finish up the qsizetype conversionEdward Welbourne2020-08-281-2/+2
| | | | | | | | | Correct one QString::lastIndexOf() whose return and parameter had been changed, but body and comment hadn't. Task-number: QTBUG-85700 Change-Id: Icbcd049f72346f0e696e6b22fe0893f6de5a2646 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use qsizetype for the size of QByteArray's raw data methodsEdward Welbourne2020-08-281-7/+2
| | | | | | | | | A ### comment said to use int in setRawData(), which took a uint; but the underlying QArrayDataPointer::fromRawData() takes a qsizetype, so propagate that all the way. Change-Id: Iba1f8d020c509b33f5c202c22c6a9bf85b3bab7f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use char32_t for QLocaleData::zeroUcs() and friendsEdward Welbourne2020-08-284-30/+27
| | | | | | | | | | Also catch some stray ushort that should be char16_t by now, use unicode character values for some constants and rename a UCS2 variable to not claim it's UCS4. Change-Id: I374b791947f5c965eaa22ad5b16060b475081c9d Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Don't second-guess strcoll()Edward Welbourne2020-08-281-8/+3
| | | | | | | | | It's defective on Android, but no worse so than the fall-back we were using; and we can't remember why we had that fall-back anyway. Task-number: QTBUG-63518 Change-Id: I28e9b5c7cc64963c9e3941eb1bad85aced280a9b Reviewed-by: Lars Knoll <lars.knoll@qt.io>