summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
...
* | Clean up QStringLiteral definitionMarc Mutz2017-02-151-28/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We require lambda support in the compiler since Qt 5.7, so drop the guard macro. Apart from MSVC 2013, all our supported compiler also support char16_t: - VxWorks uses GCC 4.8, which supports char16_t since 4.5. - ICC supports char16_t since v12.1; we require v14+. - ONX uses a GCC which supports char16_t in the compiler, but is equipped with a stdlib that does not sport char16_t support, which is why we revoke its Q_C_UNICODE_STRINGS in qcompilerdetection.h. But we don't need stdlib support, we only need the core language feature. This is the only platform where this patch actually changes something. It removes the, rather unfair, pessimization of the platform which could have supported the static-storage- duration implementation of QStringLiteral instead of the fallback, which uses dynamic memory (QString::fromUtf8()). - GCC and Clang support char16_t since 4.5 and 3.0, resp., which is far below our minimum compiler requirements in effect since Qt 5.7. - On Windows, MSVC supports char16_t since 2015 only, and we still support 2013, but on Windows, wchar_t is the same size as char16_t, so instead of u"str" we can fall back to L"str". So simplify the implementation of QStringLiteral by assuming that all these feature are present, adding noexcept to the lambda to make noexcept() queries return true. This allows us to guarantee: [ChangeLog][QtCore] QStringLiteral is now guaranteed to be evaluated at compile-time. The last platform (QNX) to use the QString::fromUtf8() fallback has been ported to allocate the string data statically, too. Change-Id: I7920d7a77001e5c5550e7c7d57ceb7c51c9eb443 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Make some atomic counters zero-basedMarc Mutz2017-02-151-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | A variable of static storage duration that is not zero-initialized takes up space in the DATA segment of the executable. By making the counters start at zero and adding the initial value afterwards, we move them over to the BSS segment, which does not take up space in the executable. Wrap atomics used across function boundaries into small functions, to avoid code duplication and to increase readability. Change-Id: Ida6ed316ecb8fe20da62a9577161349e14de5aed Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QString(Ref): make toLatin1()/toLocal8Bit() null handling consistentMarc Mutz2017-02-153-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Systematic testing in tst_QStringApiSymmetry revealed a bug in QStringRef::toLatin1(): a null input did not result in a null output, but an empty one. This is fixed, for consistency with QString::toLatin1(), and QString(Ref)::toUtf8(), which behaved correctly already. The same bug was found in QString(Ref)::toLocal8Bit(), which is particularly hideous, as it's documented to fall back to toLatin1(), which preserves null inputs. Fixed, too. [ChangeLog][QtCore][QString] toLocal8Bit() now preserves nullness of the input QString (outputs null QByteArray). [ChangeLog][QtCore][QStringRef] toLocal8Bit() and toLatin1() now preserve nullness of the input QStringRef (output null QByteArrays). Change-Id: I7026211922c287e03d07e89edbad2987aa646e51 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* | Correct \since for QStorageInfo::subvolume()Thiago Macieira2017-02-151-1/+1
| | | | | | | | | | | | | | | | 3e9db01a2e4be5034d10d6eeafd65d0a8609615b entered dev after the 5.8 branch. Change-Id: I4139d5f93dcb4b429ae9fffd14a349e85e62a298 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Fix minor typos in apidocFrederik Schwarzer2017-02-151-1/+1
| | | | | | | | | | Change-Id: I5ce9599a60ea336b469807df075e491f0e6df680 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* | Fix is_iec559 assert on GHS compilerKimmo Ollila2017-02-151-0/+13
| | | | | | | | | | | | | | | | | | | | | | GHS compiler is not fully compliant with iec559. Therefore we need to replace is_iec559 assertion with separate checks to build quint16. Change-Id: I88c57e394b8d4e7899ee7d4a13cbfbac9436b2fc Reviewed-by: Rolland Dudemaine <rolland@ghs.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QElfParser: Fix plural form in error messageFriedemann Kleint2017-02-151-4/+6
| | | | | | | | | | | | | | | | Amends change dcec1420ea9d7e90bbd7f37be15d8e61eaf35d23. Change-Id: I54c7db012d87a55c310141debac19118e7cb284a Reviewed-by: Robert Loehning <robert.loehning@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-02-1411-116/+160
|\| | | | | | | Change-Id: I2bd2e61bae1eab4fc74fa6accd741ed9ae1f0669
| * announce 'temporaryfile' feature in bootstrap libraryOswald Buddenhagen2017-02-131-0/+1
| | | | | | | | | | | | | | | | qmldevtools refers to it. Task-number: QTBUG-58819 Change-Id: Id88265bb17e4d2e9c61f77409c4163eacc4a13f3 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Fix QLibrary::isLibrary on Apple platformsFilipe Azevedo2017-02-121-21/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add proper support for 'so' and 'bundle' suffixes. Qt wrongly assumes .so libraries are not versioned on Apple platforms, which is wrong. Also, the shared library .bundle which is what Apple recommends instead of .so, are also versioned (not to be confound with the different Core Foundation bundles, which are directory hierarchy). For more info, see http://docstore.mik.ua/orelly/unix3/mac/ch05_03.htm. Especially the part that reads: "Loadable modules, called bundles in Mac OS X, have the file type MH_BUNDLE. Most Unix-based software ports usually produce bundles with a .so extension, for the sake of consistency across platforms. Although Apple recommends giving bundles a .bundle extension, it isn't mandatory." Task-number: QTBUG-50446 Change-Id: Iacd5136397a12d65d83821434f332eb602550b4b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Update the __xxx__ macros due to MSVC and ICC not defining them allThiago Macieira2017-02-121-1/+31
| | | | | | | | | | | | | | | | And if __AES__ or __PCLMUL__ is defined, then we expect wmmintrin.h to exist. Change-Id: I445bb15619f6401494e8fffd149db77dc513e071 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * Use QBasicMutex in qthread_win.cppThiago Macieira2017-02-111-2/+2
| | | | | | | | | | | | | | | | It's QtCore, so we're fine. Change-Id: Ifaee7464122d402991b6fffd14a0d7ad9c09e2f2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * Improve QIODevice::peek() performance on buffered devicesAlex Trotsenko2017-02-092-45/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 5.7, QIODevice::peek() implementation is based on transaction mechanism. While technically it's correct, seeking backward on a buffered random-access device clears the internal buffer that affects the performance of reading. To solve the problem, this patch implements peek mode directly inside the reading procedure. Task-number: QTBUG-56032 Change-Id: Ic5269f76e44c491a0309e13aba87fa7cf7b9259f Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| * Refactor QIODevice::read()Alex Trotsenko2017-02-092-36/+51
| | | | | | | | | | | | | | | | | | Move device-dependent part of the code into the private function for further reusing by peek() procedure. Task-number: QTBUG-56032 Change-Id: Iedceafe4b0bab109ca5c64ad274d779efe87c27b Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| * rename qvector.cpp => qvector.qdocOswald Buddenhagen2017-02-092-1/+0
| | | | | | | | | | | | | | | | | | | | the file contains no code. this avoids complaints from ar/ranlib in static/bootstrapped builds. Change-Id: Iee22ffc61a5f9ea8c25f5455b7e8e017ac521624 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Merge several Q_GLOBAL_STATICs in qresource.cpp into oneThiago Macieira2017-02-091-4/+18
| | | | | | | | | | | | | | | | | | Since they are all used in a typical application, this reduces the number of memory allocations (thus, the overhead) as well as the state-keeping in the libc atexit() functions. Change-Id: Ifaee7464122d402991b6fffd14a0e59457ad9cb7 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * Avoid unnecessary creation of some Q_GLOBAL_STATICThiago Macieira2017-02-092-12/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If these lists weren't created in the first place, then they are empty. We don't need to create it in order to conclude that. Unlike most Q_GLOBAL_STATICS, these are almost never used and yet they were always created due to where they were checked. Since we're calling exists() before, there are two consequences: first, since the list already exists, we're not allocating memory so it cannot throw std::bad_alloc when being accessed. Second, since we've just checked it exists, we can use QGlobalStatic's operator*(), which is slightly faster than operator()(). The weird &(*list) syntax is only to avoid changing the rest of the code that used a pointer Change-Id: Ifaee7464122d402991b6fffd14a0e44f533dc3d9 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | QCollatorSortKey: add some std::moveMarc Mutz2017-02-135-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All implementations of QCollator::sortKey() can benefit from moving their CollatorKeyType into the QCollatorSortKeyPrivate on construction. So make the QCollatorSortKeyPrivate ctor a perfect forwarder for its m_key member, and add std::move() calls where they were missing (in all but one case, lvalues were passed). Make the ctor explicit, as it should have been from the beginning. Change-Id: I2a1cdda5fd23990ace019b963df895c621a1fa85 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | QThreadPool: replace a QSet with a QListMarc Mutz2017-02-132-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QThreadPool maintains three containers of QThreadPoolThread*: - allThreads, a QSet - waitingThreads, a QQueue - expiredThreads, also a QQueue None of the operations on allThreads make use of QSets fast lookup. The only functions called on it are isEmpty(), count(), insert(), and swap(). Since therefore QSet adds nothing but overhead, causes indeterminism (e.g. when deleting threads in Private::reset()) and code bloat, use the same container for allThreads that underlies QQueue: QList. Port insert() to append(). Add an assert to verify that we're not running into an ABA problem here (but this should never fire, since we're never deleting threads except in Private::reset(), where we do remove them from allThreads), just in case. Saves ~0.5KiB in text size on optimized Linux AMD64 GCC 7.0 builds. Change-Id: I53a4d5ef2c204420f7c8852f1e72ab3d6ea43d08 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Don't include qfloat.h in the QtCore master includeThiago Macieira2017-02-091-0/+1
| | | | | | | | | | | | | | | | | | | | | | We have observed that MSVC 2013 gets lost with the overloads that this header adds, causing compilation bugs. This is believed to be a compiler bug, but it's not something we can work around. Task-number: QTBUG-58555 Change-Id: I536c32a88bff44dab37afffd14a1bad1d31dc16d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Glen Mabey <Glen.Mabey@swri.org>
* | Add QDataStream streaming operator for QFlagsThiago Macieira2017-02-092-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | We're already using it, for example in qpaintengine_pic.cpp:502: d->s << p << ti.text() << fnt << ti.renderFlags() << [...] ^ [ChangeLog][QtCore][QFlags] Added operator<< and operator>> for streaming QFlags into and out of QDataStreams. Change-Id: I33dc971f005a4848bb8ffffd1478e79d6102d1bc Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-02-0820-118/+92
|\| | | | | | | | | | | | | | | Conflicts: configure.json mkspecs/win32-icc/qmake.conf Change-Id: Ibf40546b024d644c7d9ed490bee15b82597f4d3f
| * Remove unused qt_application_thread_id variableThiago Macieira2017-02-081-8/+0
| | | | | | | | | | | | | | | | | | Seems to be a write-only variable and QThread::currentThreadId has no side-effects. Change-Id: Ifaee7464122d402991b6fffd14a0c8666968dfe4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * QStringMatcher: fix setCaseSensitivity() on a non-QString-backed matcherMarc Mutz2017-02-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a non-QString-backed mode (via the (QChar*, int) ctor) was added for Qt 4.5, the author forgot to adjust the setCaseSensitivity() function. It still uses q_pattern instead of (p.uc, p.len) as the pattern for which to create the skip-table. Since there is no setPattern() overload for this mode, the correctness of the matcher is not harmed by this, but its performance degrades to that of a linear scan: the skip-table, being filled from an empty pattern, will be all-zeros, sending bm_find() into the 'possible match' case at every character. Since matching is still correct, but slow, it's not possible to write a test for this. I did, however, leave my attempts in the auto-test, for when we add QStringView overloads of setPattern() which will then be able to expose the bug. Change-Id: I7b803e8624b0352a0a974900affbbfc0c260d93b Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| * QCollator/ICU: fix a rather hair-raising performance bug in compare(QChar*, ↵Marc Mutz2017-02-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | int, QChar*, int) The intention when using an overload that takes (const QChar*, int) instead of a QString is probably to avoid creating a QString in the first place. If the implementation stabbs the user in the back by internally creating a QString just so it can call QString::compare() on it, then that is rather unacceptable. QCollator is already a friend of QString, so, absent QStringView, resolve to calling compare_helper(). Change-Id: Ia7de1a095e3e310bd1b9957ed67291cc9cc95b32 Reviewed-by: David Faure <david.faure@kdab.com>
| * Reset QFileDevicePrivate::cachedSize on file closeAleksey Lysenko2017-02-061-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | When a QFile object is reused, the atEnd() method may return incorrect values. The reason for this is that QFileDevicePrivate::cachedSize is not cleared. Setting cachedSize = 0 in the close() method fixes this issue. Task-number: QTBUG-57698 Change-Id: I828a2cf844e98d581098f2c781fa47d2cd3275ce Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * QDateTimeParser: de-duplicate vtableMarc Mutz2017-02-052-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDateTimeEdit (QtWidgets) inherits its Private class from QDateTimeParser. By making the destructor (usually the first non-inline, non-pure, virtual function, and therefore the trigger for most compilers to emit the vtable and type_info structures for the class in that TU) out-of-line, vtables and, more importantly, type_info structures for the class are pinned to a single TU. This prevents false negative dynamic_cast and catch evaluation. Since the class is already exported, users of these classes are unaffected by the change, and since it's private API, we don't need to avoid adding code to the out-of-line destructor until Qt 6. Task-number: QTBUG-45582 Change-Id: Id57289a7eff13564dddeca0af1c45a6180c36c48 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Fix data corruption when reading byte arrays from QSettingsThierry Bastian2017-02-031-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | On macOS, the code that read the plist is using QByteArray::fromRawCFData. When we return the data directly we need to detach the QByteArray so that it does not point CFData's data that will get deallocated just after the call. Task-number: QTBUG-58531 Change-Id: If829a304b986c99c8fc2aeeb992f2d539a4eef3a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * Doc: corrected minor link issuesNico Vertriest2017-02-022-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | qcore_foundation.mm: - Can't link to 'fromCGPoint()' - Undocumented parameter 'point' in QPointF::fromCGPoint() - Can't link to 'fromCGRect()' - Undocumented parameter 'rect' in QRectF::fromCGRect() - Can't link to 'fromCGSize()' - Undocumented parameter 'size' in QSizeF::fromCGSize() Change-Id: Ie48f04c7b990634f8c5a836100b1be7854848bb4 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
| * Qt5CoreMacros: append the --compiler-flavor=msvc flagBen Boeckel2017-02-011-1/+1
| | | | | | | | | | | | | | | | Previously, the flags were replaced rather than appended to, losing -I flags and causing `#include` directives to fail. Change-Id: I74609e891ea327a8136c8075ab13176fc85ab111 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Fix libs build with msvc on Chinese locale on WindowsLiang Qi2017-02-012-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Chinese locale means Code Page 936 here. It's also related with removing C4819 warnings. And it's also following Conventions in Qt source code: All code is ascii only (7-bit characters only, run man ascii if unsure) See also http://wiki.qt.io/Coding_Conventions Task-number: QTBUG-56155 Task-number: QTBUG-58161 Change-Id: I37fa7a0e6a82a16eaf80e1cc99be801099ab87de Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: jian liang <jianliang79@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * qnumeric_p.h: Simplify code to match currently-supported platformsThiago Macieira2017-01-311-9/+2
| | | | | | | | | | | | | | | | | | | | MSVC < 1800 (older than 2013) is no longer supported, so we can simplify the code. And the implementation for C never worked -- "if it's not C++, let's use a namespace!" Change-Id: Iaeecaffe26af4535b416fffd148c2c6788c43881 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * QtCore & winmain: Remove dead codeThiago Macieira2017-01-311-27/+0
| | | | | | | | | | | | | | | | | | | | The last use of qWinMain was removed in commit 390598cb4392bbf5f77e8a05578e190b1a9f544a, "Winmain: Remove Windows CE." It used to be used on non-WinCE, but that was dropped in commit 9b121e5579538477a1fc7c8250e5d7e875a58de8. Change-Id: Idc347fbb462f4122b044fffd1490a210358a61b1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * QVariant: don't do fuzzy comparisons with NaN and infinitiesThiago Macieira2017-01-311-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | There was a test that tested this, but was wrong. [ChangeLog][QtCore][QVariant] Fixed a bug that caused wrong results for comparisons of QVariants containing either NaN or infinite numbers. Task-number: QTBUG-56073 Change-Id: I33dc971f005a4848bb8ffffd1475d29d00dd1b7f Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Doc: Normalize \since usageTopi Reinio2017-01-313-5/+5
| | | | | | | | | | | | | | | | | | | | | | Although it's permitted to specify the project name together with a version number for \since, it's unnecessary for Qt classes and functions. This change also normalizes the version formatting: '<major>.<minor>' Change-Id: Ie5a43662077d13c31e241bcde8a7a2849d27d330 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
| * Regroup the x86 QT_FUNCTION_TARGET_STRING_xxxx macrosThiago Macieira2017-01-301-7/+7
| | | | | | | | | | | | | | Easier to have an overview of them. Change-Id: I445bb15619f6401494e8fffd149db6dec4851f6d Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * Move the declaration of SSE3 & newer macros above their useThiago Macieira2017-01-301-14/+14
| | | | | | | | | | Change-Id: I445bb15619f6401494e8fffd149db66da3405b48 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * Re-fix Clang-cl and ICC support on WindowsThiago Macieira2017-01-301-31/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of using the actual compiler version to determine which C++11 features to enable, let's just use the Mirosoft compiler version that the actual compiler is claiming compatibility with. That is because the limiting factor is often the standard library, not the compiler itself. This will cause some features that do not depend on the library to also be disabled, but oh well. Better upgrade your Visual Studio version instead. Task-number: QTBUG-57696 Change-Id: I3e4e5051937c40319d6efffd14912cd4fdab25fb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
| * MSVC: Fix use of POPCNT instruction without CPU checkThiago Macieira2017-01-271-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The __popcnt family of intrinsics with MSVC generates directly the POPCNT instruction and are documented to do so: https://msdn.microsoft.com/en-us/library/bb385231.aspx So we can't use __popcnt unless the target processor supports it. [ChangeLog][Windows] Fixed a bug that caused applications to crash with "Illegal instruction" faults when compiled with Visual Studio and run on some older processors. Task-number: QTBUG-58446 Change-Id: I445bb15619f6401494e8fffd149d83bd2a7e3376 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
| * Fix MIPS DSP configurationAllan Sandfeld Jensen2017-01-271-0/+9
| | | | | | | | | | | | | | | | | | The patch fixes a number of bugs in code, and removes dead logic clarifying that MIPS DSP, like ARM NEON, has no runtime detecton. Change-Id: If2f4eea68da5b2eaa80b8e9c8258206d8c1b7173 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QCollator: don't pipe bcp47Name() through QStringMarc Mutz2017-02-074-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Give QCollator access to QLocalePrivate::bcp47Name(), to avoid both the latin-1 -> UTF-16 conversion in QLocale::bcp47Name(), as well all as - the replace('-', '_').toLatin1() call in ICU - the toLocal8Bit() call in macOS - the toUtf8() call in Windows implementations of QCollatorPrivate::init(). This is safe, since, according to https://tools.ietf.org/html/bcp47, a BCP47 name only contains US-ASCII (ALPHA used, which is defined by https://tools.ietf.org/html/rfc5234 to be [a-zA-Z] only). Change-Id: Id56befb1b5a7983494d848cdabf7ebeda377cf9f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | QCollatorSortKey: use QExplicitlySharedDataPointer as pImplMarc Mutz2017-02-071-1/+1
| | | | | | | | | | | | | | | | | | The key is immutable except for assignment and swap, so don't run the risk of auto-detaching and use the explicit-detach version of QSharedDataPointer. Change-Id: Ib2cfe5981e6dfe375d6208289ff58247ef9d4870 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | QLoggingRegistry: optimize updateRules()Marc Mutz2017-02-071-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ... by not creating three temporary QVectors just to concatenate them. There's no QVectorBuilder, so what works well with QStrings doesn't work well at all with QVectors. The chaining of op+ causes three temporary QVectors to be created and thrown away. Instead, use clear() (which preserves the vector's capacity these days), followed by four op+=. Change-Id: I300bd35544ea41037d28db0f48f210c33c826b85 Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
* | Fix some qdoc warnings for 5.9Friedemann Kleint2017-02-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix warnings: src/network/access/qhstspolicy.cpp:158: warning: Undocumented parameter 'expiry' in QHstsPolicy::setExpiry() src/network/access/qhstspolicy.cpp:178: warning: Undocumented parameter 'include' in QHstsPolicy::setIncludesSubDomains() src/network/access/qhstspolicy.cpp:178: warning: Can't link to 'includeSubdomains()' src/widgets/kernel/qsizepolicy.cpp:402: warning: Cannot find 'transposed(...)' in '\fn' QSizePolicy QSizePolicy::transposed() src/widgets/kernel/qsizepolicy.h:165: warning: No documentation for 'QSizePolicy::transposed()' src/widgets/util/qundostack.cpp:164: warning: Undocumented parameter 'obsolete' in QUndoCommand::setObsolete() Fix the signature of the QStaticByteArrayMatcher member functions. The warnings src/corelib/tools/qbytearraymatcher.cpp:372: warning: Cannot find 'indexIn(...)' in '\fn' QStaticByteArrayMatcher::indexIn(const char *haystack, int hlen, int from) src/corelib/tools/qbytearraymatcher.cpp:382: warning: Cannot find 'indexIn(...)' in '\fn' QStaticByteArrayMatcher::indexIn(const QByteArray &haystack, int from) remain, though since apparently qdoc is thrown off by the constructor. Change-Id: I157359a881ff3fbc80d2eeb52dd5c27249d009c4 Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* | Un-export QCollator{SortKey,}PrivateMarc Mutz2017-02-061-2/+2
| | | | | | | | | | | | | | | | This is private API, and used nowhere else except in qcollator*, so don't export these classes. Change-Id: I217fde97c60ab0a3e19774ed5a6eed8b156fff1d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'gerrit/dev' into HEADOswald Buddenhagen2017-02-0170-426/+955
|\ \
| * | De-inline qfloat16 streaming operators in QDataStreamThiago Macieira2017-02-012-9/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Which allows us to remove the #include. The qfloat16 operator overloads in the global namespace are giving some trouble on some compilers, for reasons unknown (could be compiler bug, could be real). So don't #include the header anywhere else: let the user choose it. Task-number: QTBUG-58555 Change-Id: I4c9f691516694b90b08ffffd149ef7dff27d0f6a Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
| * | New qfloat16 classGlen Mabey2017-01-316-1/+482
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This constitutes a fairly complete submission of an entirely new floating point type which conforms to IEEE 754 as a 16-bit storage class. Conversion between qfloat16 and float is currently performed through a sequence of lookup tables. Global-level functions qRound(), qRound64(), qFuzzyCompare(), qFuzzyIsNull(), and qIsNull() each with a qfloat16 parameter have been included for completeness. [ChangeLog][QtCore] Added new qfloat16 class. Change-Id: Ia52eb27846965c14f8140c00faf5ba33c9443976 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | Streamline #include <type_traits>Giuseppe D'Angelo2017-01-313-5/+0
| | | | | | | | | | | | | | | | | | | | | It's included by qglobal.h, so we get it for free in other headers. Change-Id: I90072156e313271a5354a39cbf78a83a6885c431 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | QLocale(Win): fix pessimizing use of QStringBuilderMarc Mutz2017-01-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of result += QString(string builder expression); forcing a QString creation incl. memory allocation, do result += string builder expression; using the overloaded QString += QStringBuilder operator. Change-Id: I23023c76620fa6bb7bf9f2786c22f6a2ec0d87c2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>