summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* Silence some warnings about fallthroughFriedemann Kleint2020-07-091-2/+2
| | | | | | | | src/corelib/text/qunicodetools.cpp:1243:13: warning: this statement may fall through [-Wimplicit-fallthrough=] src/corelib/text/qunicodetools.cpp:1247:55: warning: this statement may fall through [-Wimplicit-fallthrough=] Change-Id: I441000db46cb6d85a5dcd0534ea2168b39a3f3bd Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* CMake: Fix dependency in qt_add_big_resourcesKai Koehne2020-07-082-2/+2
| | | | | | | | | | | | Ensure that the second rcc pass is executed whenever the object file changes. Patch provided by Hongpeng Liu <lhpzwd@163.com> Fixes: QTBUG-85186 Pick-to: 5.15 Change-Id: I6e52ec15048ab286efd85500ca535b2b8b01c270 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Automatically register comparison operators in QMetaTypeFabian Kosmale2020-07-084-179/+167
| | | | | | | | | | | | | | | | | This removes the fully manual registration of comparison operators in QMetaType and replaces it with an automatic registration through Q_DECLARE_METATYPE(). [ChangeLog][QMetaType] The QMetaType::registerComparator() and QMetaType::registerEqualsComparator() have been removed. Q_DECLARE_METATYPE() now automatically registers any operator==() and/or operator<() for a type visible where it is used on that type, as part of declaring its meta-type. Change-Id: I3df451b652b735c093533838bf32f3cc785439f8 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Constrain the comparison operators for our container classesLars Knoll2020-07-087-54/+67
| | | | | | | | | | | | This had already been in very few places, where we ran into issues with this before. More generic constraints here will significantly reduce the amount of error messages a user has to parse in case he tries to instantiate an operator by accident (or with a lacking comparison operator for one of it's template arguments). Change-Id: I1521d19c55d99732d9742402bd534c390a8e4242 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add type traits to safely determine the existence of comparison operatorsLars Knoll2020-07-083-1/+119
| | | | | | | | | | | | | | | | | | Containers often define an operator==() or operator<() which is very useful for generic code. But those operators can usually not be instantiated if the template argument doesn't implement the operator. This sometimes leads to the compiler trying all possible template expansions and implicit conversions for the type, giving extremely long error messages. The traits support can be used to safely constrain those operators. Being able to safely detect this will also allow us to fold the comparison support that is currently a large cludge for user types directly into QMetaType. Change-Id: Ib84afb5348c3eb0be5161d6ba9d5fe237709c65f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Get rid of one call into the TLS when evaluating bindingsLars Knoll2020-07-082-3/+7
| | | | | | | | | Store a pointer to the TLS in the BingingEvaluationState. Like this, we can save us one TLS lookup in the destructor. Shaves off a couple of percent during binding evaluation. Change-Id: Idc9dc5b0ea202aaeb68cdc063700b8e4968753dc Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Introduce QByteArrayViewSona Kurazyan2020-07-0812-296/+1345
| | | | | | | | | | | | | | | | | | | | Created a QByteArrayView in symmetry with QStringView. Added the basic tests symmetrical to QStringView tests. Moved the implementations of non-modifying methods of QByteArray to namespace QtPrivate, to be reused inline from both QByteArray and QByteArrayView. Changed QByteArray's counterparts of those methods to take QByteArrayView as argument instead of QByteArray. Removed QByteArray's operator QNoImplicitBoolCast(), because it was causing ambiguity when calling those methods with QByteArray argument (it was there to perevnt if(!ba)/if(ba) from compiling, but currently that would be ambiguous and won't compile anyway). [ChangeLog][QtCore][QByteArrayView] New class. Task-number: QTBUG-84321 Change-Id: I05f92e654cf65c95f2bb31b9c9018746ac110426 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Replace use of deprecated Q_OS_MACX in favor of Q_OS_MACOSTor Arne Vestbø2020-07-081-1/+1
| | | | | Change-Id: I1059d56f67be28a4cc1a66b744e81df6d0b5d00d Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Extend QSharedMemory to work with qsizetype for sizesLars Knoll2020-07-077-18/+24
| | | | | | | | This allows larger than 2G memory segments to be allocated. Fixes: QTBUG-76995 Change-Id: I95309eeea511fadb28724c7592298c2fcc6f1d1a Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Rewrite AA_MacDontSwapCtrlAndMeta documentationTor Arne Vestbø2020-07-071-7/+18
| | | | | Change-Id: Ifc41d0d341aed029e89baa3fc20f9535c1fb01d9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Improve performance of property binding evaluationLars Knoll2020-07-073-6/+4
| | | | | | | | | Improves performance of binding evaluation by ~20% for simple C++ bindings by simplifying and inlining the code that clears the array of property observers. Change-Id: I829ac1895f1673367d737944d950360015a5b435 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QThread::create: remove the pre-C++17 codepathsGiuseppe D'Angelo2020-07-072-99/+3
| | | | | | | | | | | As we require C++17 now. The configure-time test checking for future/async is left in for the moment being. Change-Id: Ifde39d420673f70a2277f5a645bfaad30935a381 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Clarify warning message about PIC/PIEDaniel Kahn Gillmor2020-07-071-1/+1
| | | | | | | | | | | | As noted in discussion at https://dev.gnupg.org/T4982#135524, when there is a mismatch between position-independence of the Qt library and other compilations, the warning produced by Qt is confusing. It should say explicitly that -fPIE should not be passed. Change-Id: I66394f86230a6598ac383bfd7bb14ab8cbbf6245 Pick-to: 5.15 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add ; to Q_UNUSEDLars Schmertmann2020-07-0726-75/+75
| | | | | | | | This is required to remove the ; from the macro with Qt 6. Task-number: QTBUG-82978 Change-Id: I3f0b6717956ca8fa486bed9817b89dfa19f5e0e1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Try to workaround bogus compiler warning in gcc 9 for ARMv7Lars Knoll2020-07-063-4/+6
| | | | | | | | | | | | | | | | | | | | | | | ../../src/corelib/io/qurlidna.cpp: In function ‘QString qt_ACE_do(QStringView, AceOperation, AceLeadingDot)’: ../../src/corelib/io/qurlidna.cpp:2543:23: error: ‘int __builtin_memcmp_eq(const void*, const void*, unsigned int)’ reading 8 bytes from a region of size 2 [-Werror=stringop-overflow=] if (memcmp(result.constData() + prevLen, acePrefixUtf16, sizeof acePrefixUtf16) == 0) ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1plus: all warnings being treated as errors In function ‘bool operator==(const QByteArray&, const QByteArray&)’, inlined from ‘virtual void (* QLinuxFbIntegration::platformFunction(const QByteArray&) const)()’ at ../../src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp:185:18: include/QtCore/../../../../src/corelib/text/qbytearray.h:571:45: error: ‘int __builtin_memcmp_eq(const void*, const void*, unsigned int)’ reading 17 bytes from a region of size 1 [-Werror=stringop-overflow=] The warnings/errors are bogus. Fix them by using QStringView::sliced() and de-inlining the comparison operator for QByteArray. Change-Id: I24956fe74a7989e75cd03d717570b8fca493ab23 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Rename from() to sliced()Lars Knoll2020-07-066-11/+14
| | | | | | | | After API discussions, agreement was that from(n) is a bad name for the method. Let's go with sliced(n) instead. Change-Id: I0338cc150148a5008c3ee72bd8fda96fb93e9c35 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Small fixes to the QList documentationLars Knoll2020-07-062-4/+4
| | | | | Change-Id: Ic839f7859912eb48bb192755d6f10536a0a73f8e Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* Add support for first(n), last(n) and sliced() to QListLars Knoll2020-07-062-0/+72
| | | | | | | | | This keeps the API symmetric with what we have in our string classes. Change-Id: I94c5b39b718ca2472f9ca645e7a42e4314636f67 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Port QString to qsizetypeLars Knoll2020-07-066-331/+316
| | | | | | Change-Id: Id9477ccfabadd578546bb265a9483f128efb6736 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use qsizetype in QListLars Knoll2020-07-065-112/+112
| | | | | | | | | | | | | | | | | | | | The change creates a slight source incompatibility. The main things to take care of are * code using printf statements on list.size(). Using qsizetype in printf statements will always require a cast to work on both 32 and 64 bit. * A few places where overloads now get ambiguous. One example is QRandomGenerator::bounded() that has overloads for int, uint and double, but not int64. * Streaming list.size() to a QDataStream will change the format depending on the architecture. [ChangeLog][QtCore][QList] QList now uses qsizetype to index into elements. Change-Id: Iaff562a4d072b97f458417b670f95971bd47cbc6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Allow allocating more than 2G items in a vectorLars Knoll2020-07-063-67/+59
| | | | | | | | | | | Also adjust qCalculateBlockSize() to be able to handle large allocations. QVector::length() is currently still limited to 2G items, that will get changed in a later commit. Change-Id: I3a92fbfd7f281d30844c5fafa3b9a474bc347c19 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Implement a proper iterator for QTypedArrayDataLars Knoll2020-07-061-2/+66
| | | | | | | | | | | This avoids ambiguities in our API when someone e.g. writes vector.insert(0, ...). It requires a slight workaround in qlalr, where std::search() for libc++ doesn't like that our difference_type is qsizetype. Change-Id: I40aa1040781ffbdd12d04410078207969b3bde53 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make QArrayDataPointer::size a qsizetypeLars Knoll2020-07-065-12/+12
| | | | | | | | This is a next step towards making QList, QString and QByteArray able to deal with large sizes. Change-Id: Icad49b33f503401ac4912678b2f88584c6f91a63 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add a couple of noexceptLars Knoll2020-07-062-15/+15
| | | | | Change-Id: I993da2094482092540388ee72be3262bac94fad7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Get rid of QArrayData::sharedNull()Lars Knoll2020-07-064-44/+6
| | | | | | | | Remove the last places where those got used and avoid allocations when we resize to 0. Change-Id: Ib553f4e7ce7cc24c31da15a55a86d18bdf1cc5c3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Get rid of QArrayData::isMutable()Lars Knoll2020-07-061-11/+2
| | | | | Change-Id: Ifb6368b83cd12ec3897c6b6b846d71bffa1f74b9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Get rid of unused flags in QArrayDataLars Knoll2020-07-062-24/+8
| | | | | Change-Id: I3ea754b44fb33e33baba0781d9ae15b7f3b3d8eb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Avoid allocating a d-pointer for empty stringsLars Knoll2020-07-063-24/+15
| | | | | | | | Those can simply be handled as compile time constant strings pointing to the empty (Q)Char. Change-Id: I1f6f6ab923a30c68a720003ca68c34c572aa29da Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Simplify Q_ARRAY_LITERALLars Knoll2020-07-064-51/+18
| | | | | | | And clean up some unused pieces of code. Change-Id: I285b6862dc67b7130af66d3e08f652b1a56b990e Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Get rid of shared null for QByteArray, QString and QVectorLars Knoll2020-07-0610-175/+125
| | | | | | | | | | | | | | As a side effect, data() can now return a nullptr. This has the potential to cause crashes in existig code. To work around this, return an empty string from QString::data() and QByteArray::data() for now. For Qt 6 (and once all our internal issues are fixed), data() will by default return a nullptr for a null QString, but we'll offer a #define to enable backwards compatible behavior. Change-Id: I4f66d97ff1dce3eb99a239f1eab9106fa9b1741a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QList: improve the range constructorsGiuseppe D'Angelo2020-07-061-4/+4
| | | | | | | | | | In case of forward iterators, call std::distance just once and not twice. In case of non-forward iterators, don't call reserveIfForwardIterator -- as the name says, it doesn't make sense on non-forward iterators. Change-Id: I7e6a603205286c05f7bc7c47fd1f1e0d92705b20 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QList: go for the rule of zeroGiuseppe D'Angelo2020-07-061-9/+2
| | | | | | | | | The hand-written special member functions did exactly what the compiler generated ones would do anyhow. Change-Id: I66439178460d30957135aac44680dd3109ada62a Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Q*Iterable::const_iterator: pass by const referenceGiuseppe D'Angelo2020-07-061-2/+2
| | | | | | | | The iterators are quite heavy objects (>100bytes), don't pass them by value. Change-Id: I4c9d1f64d14419a35bd067884d7e8bca2589f9b9 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Use QList instead of QVector in statemachineJarek Kobus2020-07-066-45/+40
| | | | | | Task-number: QTBUG-84469 Change-Id: I2b1399c34ebcc2237ca2662d97b54e81f11cb7af Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Remove unnecessary ; after function implementationsLars Schmertmann2020-07-062-2/+2
| | | | | | Task-number: QTBUG-82978 Change-Id: Iea3bcaec1ef9f4bd0f73e5dccca33354650f5bf4 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Fix a crash in QClipBoard when copying utf16 dataLars Knoll2020-07-062-26/+0
| | | | | | | | | | | | Properly use the new QStringConverter API and not an internal qFromUtfEncoded method that was buggy after the changes. Take the oppportunity to clean up and remove qFromUtfEncoded, as QClipboard was its only user. Fixes: QTBUG-85417 Change-Id: I8540d12056bf3f448c1f628ce0bd0ad462a6447d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix workaround in pthread destructorMike Achtelik2020-07-041-19/+6
| | | | | | | | | | | | | | | | | Amends dcdfb6908db0f83cbc4e550859f56ee58a6b3420 which failed to take the workaround in destroy_current_thread_data into account. Since pthread_getspecific was completely replaced with the thread_local variable currentThreadData, the workaround has no effect anymore. Therefore we need to replace it with a workaround that makes sure currentThreadData is set inside of the destructor function. This prevents a leak, where QThreadPrivate::finish() tries to access the thread data, but since it already is null, recreates it without ever deleting it. Pick-to: 5.15 Change-Id: I3811d262a411a6bde9d6eb90f8d17e0bbc5de657 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: Fix connect syntax in snippetPaul Wicking2020-07-041-1/+1
| | | | | | | | Pick-to: 5.15 Fixes: QTBUG-85390 Change-Id: I67dbacd977acb6abdafb3b57818f24bf4a2dd302 Reviewed-by: Nico Vertriest <nico.vertriest@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Avoid use of Q_UNUSED by eliminating the parameter namesLars Schmertmann2020-07-031-1/+1
| | | | | | | | | This change only happens to files touched by the commit to add missing ; to Q_UNUSED. Task-number: QTBUG-82978 Change-Id: I10e6993a2bb3952cf9a262708b8573550e0dbe63 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Only use one macro per lineLars Schmertmann2020-07-031-1/+2
| | | | | | | | | Also add a ; where it is missing. Task-number: QTBUG-82978 Change-Id: Ic5d2a07363c25ab641d234baca89bc62238458cb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove deprecated empty macroLars Schmertmann2020-07-021-3/+0
| | | | | Change-Id: Ib2a646ee22a7f97dae584e6f068f17378fe2b494 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Doc: improve documentation about QVariant to JSON lossy conversionsThiago Macieira2020-07-022-12/+43
| | | | | | | Fixes: QTBUG-85299 Pick-to: 5.15 Change-Id: I24006db8360041f598c5fffd161c77638a54a27e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* macOS: Move key mapping from QtCore to platform pluginTor Arne Vestbø2020-07-022-144/+0
| | | | | | | | | | | There's a bunch of similar and overlapping logic in QCocoaKeyMapper already. Moving it to the same place allows us to easier find ways to reduce the overlap. None of the exported functions were used outside of the plugin. Change-Id: I6953690cdfda5ee8265b33ccbf919184c3a1700f Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Add a note to qurlidna.cpp about IDNA's Unicode version being frozenEdward Welbourne2020-07-021-0/+9
| | | | | | | | | | | | It looked a lot like it needed an update to its Unicode data (in tables and functions) but Thiago tells me this would be misguided, although we do need an upgrade to IDNA 2008, at some point. So document why this doesn't get updated along with UCD. Task-number: QTBUG-85371 Task-number: QTBUG-85323 Change-Id: I764667db9c24bf05371e8a3c2601ccbf48f99711 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Make feature datetimeparser depend on feature datestringEdward Welbourne2020-07-024-24/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | No client of QDateTimeParser actually uses it unless datestring was enabled, nor is it any use without datestring. Various methods conditioned on datestring are broken unless datetimeparser is enabled. We can't condition public API on datetimeparser, as it's a private feature, but client code can condition use of it on the private feature. All string-to-date/time conversions that use a string format (this includes all locale-specific formats) depend on feature datetimeparser. Change #if-ery (or add it) in all client (including test) code to test the right feature. Tidied up some code in the process. Killed some already-redundant textdate #if-ery. Renamed a test whose name claimed it involved locale, which it doesn't, in the course of #if-ing it. This simplifies the condition for feature datetimeedit (which overtly depended on textdate, redundantly since it depends on datestring which depends on textdate; its dependence on datetimeparser now makes its dependency on datestring also redundant). It also removes the need for assorted datestring checks in QDateTimeParser itself. Change-Id: I5dfe3a977042134b2cfb16cbcc795070634e7adf Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Remove method declaration that's not used or implementedLars Knoll2020-07-021-2/+0
| | | | | | Change-Id: If8c03c08b7bfc162908510cac278ce9267b61cdf Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move the reallocate() method from QArrayDataPointer to the Ops classLars Knoll2020-07-024-8/+12
| | | | | | | | | And only implement it for QPodArrayOps, as that's the only case where we should be using it. Change-Id: If48f3e4b142c322d3451309d6d1cf68aee569ea2 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Small cleanupLars Knoll2020-07-021-9/+2
| | | | | | Change-Id: Ic8ed50a05a9723ed252f0762d86e41fe719fc3ef Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Revert "Remove pthread storage for thread local data"Alexandru Croitor2020-07-021-21/+59
| | | | | | | | | | | | The change introduced crashes in some tests that only surfaced in certain CMake configurations. This reverts commit 76c3eee4020cae681857ee17406c655f61f9082c. Pick-to: 5.15 Task-number: QTBUG-85357 Change-Id: Ief93aa41e2d487d73b879133e7df0fd5ce0451bd Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Introduce platform API abstraction for QOpenGLContextTor Arne Vestbø2020-07-022-7/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The API is available by including qopenglcontext.h as usual, but scoped in the QPlatformInterface namespace. The namespace exposes platform specific type-safe interfaces that provide: a) Factory functions for adopting native contexts, e.g. QCocoaGLContext::fromNative(nsContext, shareContext); b) Access to underlying native handles, e.g. openGLContext->platformInterface<QCocoaGLContext>->nativeContext() c) Platform specific functionality, e.g. static QWGLContext::openGLModuleHandle() openGLContext->platformInterface<QEGLContext>->doSomething(); The platform interfaces live close to the classes they extend, removing the need for complex indirection and plumbing, and avoids kitchen-sink modules and APIs such as the extras modules, QPlatformFunctions, or QPlatformNativeInterface. In the case of QOpenGLContext these platform APIs are backed by the platform plugin, so dynamic_cast is used to ensure the platform plugin supports the requested interface, but this is and implementation detail. The interface APIs are agnostic to where the implementation lives, while still being available to the user as part of the APIs they extend/augment. The documentation will be restored when the dust settles. Task-number: QTBUG-80233 Change-Id: Iac612403383991c4b24064332542a6e4bcbb3293 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>